Shell函数
linux shell可以用户自定义函数,然后在shel脚本中调用函数定义格式:1 (function) funname[()]2 {3 action;4 (return int)5 }
note:
1.函数定义可以function funname()定义,也可以funname()直接定义,不带任何参数。2.参数返回,可以显示加return,如果不加,将以最后一条命令运行结果作为返回值,return后跟数值n(0-255)1 #!bin/bash2 emfun() {3 echo "my function!"4 }5 emfun
函数的返回值通过$?获得。
note:所有函数在使用前必须定义。这意味着必须将函数放在调用之前定义;调用仅通过函数名即可。函数参数的传递跟shell执行脚本时的参数传递一致。Shell参数传递我们可以在执行Shell脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n代表一个数字,1为执行脚本的第一个参数,2个第二个......- $0 文件名
- $# 传递的参数个数
- $* 以一个单字符串显示所有向脚本传递参数 如"$*" == $1 $2 ... $n的形式输出所有参数
- $$ 脚本运行的当前进程ID号
- $! 后台运行的最后一个进程的ID号
- $@ 与$*相同,如"$@"用""括起来的情况,以"$1" "$2" "$3"..."$n"的形式输出所有参数。
- $- 显示Shell当前选项,与set命令功能相同
- $? 显示最后命令的退出状态,0表示没有错误,其他人和我值表明错误
$* 和 $@ 区别
相同点:都是引用所有的参数不同点: 只有在双引号中体现出来。假设在脚本运行时写三个参数1 2 3, 则"*" 等于"1 2 3"(传递了一个参数),而"@"等价于"1" "2" "3"1 #!/bin/bash 2 3 echo "-- \$* 演示 ---" 4 for i in "$*"; do 5 echo $i 6 done 7 8 echo "-- \$@ 演示 ---" 9 for i in "$@"; do10 echo $i11 done