Linux-Shell脚本编程-学习-8-函数

简介: 在这章往后的学习中,我讲尽可能详细的讲书中讲到的都记录到这里,以便以后方便查看。

什么是函数,函数就是一段代码,这段代码可以在我们需要的位置调用,那么这段代码就叫做函数。



在Shell中,定义一个函数有两种方法。


1. 使用关键字 function


function name


{

}



#!/bin/bash


function func1

{

       echo " this is a function"


}


count=1

while [ $count -le 5 ]

do

       func1

       count=$[$count +1 ]

done

echo " the loop end"


这种方式有种Shell 的感觉,那么第二种就有一种我们普通常见的函数的感觉了



name()


{

}



#!/bin/bash


function func1

{

       echo " this is a function"


}

func2()

{

       echo " this is the function two"

}



count=1

while [ $count -le 5 ]

do

       func1

       func2

       count=$[$count +1 ]

done

echo " the loop end"


这里在定义函数的时候要注意,如果我们在定义函数前使用了函数。那么就会提示我们找不到这个命令了




#!/bin/bash


function func1

{

       echo " this is a function"


}



count=1

while [ $count -le 5 ]

do

       func1

       func2

       count=$[$count +1 ]

done

func2()

{

       echo " this is the function two"

}

echo " the loop end"

如果是这样的话,那么func2就会报错了

image.png


#!/bin/bash


function func1

{

       echo " this is a function"


}



func1()

{

       echo " this is the recover function"

}



count=1

while [ $count -le 5 ]

do

       func1

       count=$[$count +1 ]

done

echo " the loop end"


image.png

image.png

image.png

这样,我们的函数1就会被覆盖,所在Shell脚本中定义函数的时候一定要注意名字的唯一性



和我们普通编程一样,Shell脚本中的函数也可以有返回值,bash shell会把函数当做一个小型的脚本,运行结束时会返回一个退出状态码。有三种不同的方法可以来为函数生成退出状态码


1. 使用默认的退出状态码


默认的状态码是函数中最后一条命令返回的退出状态码。在函数结束后,使用标准的$?变量来决定函数的退出状态码




#!/bin/bash


function func1

{

       echo " this is a function"


}



func1()

{

       echo " this is the recover function"

}



count=1

while [ $count -le 5 ]

do

       func1

       echo " the function exit status is: " $?

       count=$[$count +1 ]

done

echo " the loop end"

image.png

2. 使用return来返回



#!/bin/bash


function func1

{

       value=88

       echo " this is a function"

       return $value

}


:<

func1()

{

       echo " this is the recover function"

}

!


count=1

while [ $count -le 5 ]

do

       func1

       echo " the function exit status is: " $?

       count=$[$count +1 ]

done

echo " the loop end"

image.png

不过这个的不好支持就在于这里返回的状态码只能是0-255

 

要向返自己的内容,就需要用到第三种方式

文本输出 echo

这里就不哔哔了,今天先到这。等有时间在看

 

后面是在函数中使用变量了

 



目录
相关文章
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
790 2
|
存储 安全 Linux
|
10月前
|
安全 算法 Ubuntu
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
467 13
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
1187 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
存储 Linux
linux中的目录操作函数
本文详细介绍了Linux系统编程中常用的目录操作函数,包括创建目录、删除目录、读取目录内容、遍历目录树以及获取和修改目录属性。这些函数是进行文件系统操作的基础,通过示例代码展示了其具体用法。希望本文能帮助您更好地理解和应用这些目录操作函数,提高系统编程的效率和能力。
421 26
|
12月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
通过本文,您可以了解如何在业务线程中注册和处理Linux信号。正确处理信号可以提高程序的健壮性和稳定性。希望这些内容能帮助您更好地理解和应用Linux信号处理机制。
251 26
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
本文详细介绍了如何在Linux中通过在业务线程中注册和处理信号。我们讨论了信号的基本概念,并通过完整的代码示例展示了在业务线程中注册和处理信号的方法。通过正确地使用信号处理机制,可以提高程序的健壮性和响应能力。希望本文能帮助您更好地理解和应用Linux信号处理,提高开发效率和代码质量。
277 17
|
Linux
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
836 19
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
823 18