【Linux Shell脚本编程】函数的定义与调用
一、如何在Shell中定义函数语法
#标准写法 function 函数名(){ 命令 } #简写 函数名(){ 命令 }
二、在Shell中调用函数
定义的函数必须在脚本中引用才会生效,引用函数时只需要直接使用函数名即可,可以把函数名理解成一条命令
#定义一个函数名为name并引用,执行脚本后会输出"My name is Tom", cat function.sh #!/bin/bash name(){ echo "My name is Tom" } name
三、Shell函数传参
在Shell中允许使用位置变量来给函数传参,比如"sh test.sh 10 - 5",这里的10和5就是在调用函数时的$1、-为$2、5为$3
cat test.sh #!/bin/bash function calcu { case $2 in +) echo "`expr $1 + $3`" ;; -) echo "`expr $1 - $3`" ;; \*) echo "`expr $1 \* $3`" ;; /) echo "`expr $1 / $3`" ;; esac } calcu $1 $2 $3
四、Shell函数的返回值
在函数体中可以通过return语句来退出函数并赋予一个返回值给脚本。return和exit不同之处在于exit是退出整个脚本,而return只是结束函数。如果没有为函数定义return,则以最后一条命令的运行结果($?)作为返回码,如下图
使用return自定义返回值
#!/bin/bash nginx_status(){ ps aux | grep nginx | grep -v grep & > /dev/null if [ $? -eq 0 ];then return 0 else return 1 } nginx_status echo $?
在一个脚本中定义的函数只能在该脚本中调用,不能跨脚本。如果多个脚本要调用同一个功能的函数的话难道要定义多次吗?其实不用,可以定义一个函数库文件,然后在每个脚本中引用该函数库即可。这个可以参考系统默认的一些启动脚本,都会在脚本最开始运行一次functions库文件来调用函数
五、Shell函数库的定义与使用
对于有可能会重复使用的代码可以将其封装成函数文件,然后再由其它脚本进行调用
#!/bin/bash . /shell/my_function #调用了一个函数文件 add 1 2 #函数文件里又定义了add的功能,所以这里就可以直接在脚本中使用
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论