Shell函数

格式直接举例说明

#!/bin/bash
#自定义函数;前面的function可以去掉
function doSomething(){
 echo "这是名为doSomething的函数"
}
doSomething2(){
 echo "这是名为doSomething2的函数 "
}

#调用函数直接写函数名即可
echo "-----函数开始执行-----"
doSomething
doSomething2
echo "-----函数执行完毕-----"

执行结果:

-----函数开始执行-----
这是名为doSomething的函数
这是名为doSomething2的函数
-----函数执行完毕-----

带返回值的函数

#!/bin/bash
returnFunction(){
  echo "此函数计算两个数字之和"
  echo "请输入第一个数字:"
  read num1
  echo "请输入第二个数字:"
  read num2
  echo "两个数字分别是$num1 和 $num2"
  return $(($num1+$num2))
}
#调用函数通过 $? 获取返回值
returnFunction
echo "两数之和为 $? "

执行结果:

此函数计算两个数字之和
请输入第一个数字:
23
请输入第二个数字:
34
两个数字分别是23 和 34
两数字之和为 57

函数接收参数

#!/bin/bash
getParamFunction(){
  echo "第一个参数为 $1"
  echo "第二个参数为 $2"
  #$10这样无法获取第十个和大于第十个的参数,需要加上花括号 ${10}
  echo "第十个参数为 $10"
  echo "第十个参数为 ${10}"
  echo "第十一个参数为 ${11}"
  echo "参数个数为 $#"
  echo "作为字符串输出所有参数 $*"
}
getParamFunction 1 2 3 4 5 6 7 8 9 54 76

执行结果:

第一个参数为 1
第二个参数为 2
第十个参数为 10
第十个参数为 54
第十一个参数为 76
参数个数为 11
作为字符串输出所有参数 1 2 3 4 5 6 7 8 9 54 76

参数

作用

$#

传递到脚本的参数个数

$*

以一个单字符串显示所有向脚本传递的参数

$!

后台运行的最后一个进程的ID号

$@

与$*相同,但是使用时加引号,并在引号中返回每个参数

$-

显示Shell使用的当前选项,与set命令功能相同

$?

显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误