Shell脚本:函数
函数是每个编程语言都必须有的,一些可重复的模块可以封装成函数,提高代码重用性,使代码更简洁。Shell脚本的函数语法如下:
1 2 3 4 |
[function] funname(){ action; [return int;] } |
说明:[]中的参数可以不写,return不存在话 输出语句执行结果。
不带return的函数示例如下:
1 2 3 4 5 6 7 8 |
#!/bin/bash function helloworld(){ echo "Hello world!"; } echo "---调用函数---" helloworld echo "---函数执行结束---" |
运行脚本,结果如下:
1 2 3 |
---调用函数--- Hello world! ---函数执行结束--- |
带return并输出return结果的函数示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash function plusop(){ echo "这是一个简单的加法运算的函数。"; echo -e "输入第一个数字:\c"; read a; echo -e "输入第二个数字:\c"; read b; echo " 输入的两个数分别为$a和$b"; return $(($a+$b)); } plusop echo "输入两个数和为:$?!" |
运行脚本,结果如下:
1 2 3 4 5 |
这是一个简单的加法运算的函数。 输入第一个数字:2 输入第二个数字:3 输入的两个数分别为2和3 输入两个数和为:5! |
说明:$?接收函数的返回值。还有接收return的值要立即接收,否则return值就会丢失,丢失值示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash function plusop(){ echo "这是一个简单的加法运算的函数。"; echo -e "输入第一个数字:\c"; read a; echo -e "输入第二个数字:\c"; read b; echo " 输入的两个数分别为$a和$b"; return $(($a+$b)); } plusop echo "echo一次" echo "输入两个数和为:$?!" |
运行脚本,结果如下:
1 2 3 4 5 6 |
这是一个简单的加法运算的函数。 输入第一个数字:2 输入第二个数字:3 输入的两个数分别为2和3 echo一次 输入两个数和为:0! |
通过返回结果可以看到,调用函数后没有立即接收return值,return值丢失了,返回0.
调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...,注意:参数到10及以后用${n}获取参数。读取参数的函数示例如下:
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash function param(){ echo "第一个参数值:${1}"; echo "第二个参数值:$2"; echo "第十个参数值:$10"; echo "第十个参数值:${10}"; echo "第十一个参数值:${11}"; echo "共有$#个参数"; } param 1 b 3 4 5 6 7 8 9 www 11 |
运行脚本,结果如下:
1 2 3 4 5 6 |
第一个参数值:1 第二个参数值:b 第十个参数值:10 第十个参数值:www 第十一个参数值:11 共有11个参数 |
示例中$#输出脚本或者函数的参数个数,还有一些其他参数说明如下:
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |