在shell中调用函数时,可以向其传递参数,其中常用的特殊变量如下表所示:
函数参数 | 含义 |
$# | 传递到脚本或函数的参数个数 |
$n | $1表示第一个参数,$2表示第二个参数…… 注意,当n>=10时,要使用${n}来获取相应的参数 |
$* | 以一个字符串的形式输出传递给函数或脚本的所有参数 |
$@ | 以每个参数的形式输出传递给函数或脚本的所有参数 |
$! | 上一个命令的进程ID号即PID |
$$ | 脚本运行的当前进程ID号即PID |
$0 | 当前程序的名称 |
$? | 显示前一个命令或函数的的退出状态,0表示没有错误,其他任何值表示有错误 |
$- | 显示shell使用的当前选项,与set命令功能相同 |
脚本示例如下所示:
#!/bin/bash
funWithParam(){
echo "传递到函数的参数总数:$#个"
echo "第一个参数为:$1 !"
echo "第二个参数为:$2 !"
echo "第十个参数为:$10 !"
echo "第十个参数为:${10} !"
echo "字符串形式输出所有的参数:$*"
echo "每个字符串形式输出所有的参数:$@"
echo "上一个命令的PID:$!"
echo "当前运行进程的ID:$$"
echo "当前程序的名称:$0"
echo "显示shell使用的当前选项:$-"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 35
输出的结果为:
传递到函数的参数总数:11个
第一个参数为:1
第二个参数为:2
第十个参数为:10
第十个参数为:34
字符串形式输出所有的参数:1 2 3 4 5 6 7 8 9 34 35
每个字符串形式输出所有的参数:1 2 3 4 5 6 7 8 9 34 35
上一个命令的PID:
当前运行进程的ID:5358
当前程序的名称:./test.sh
显示shell使用的当前选项:hB
特别注意:
1、$10不能获取第十个参数,要使用${10}来获取
2、$@与$*在没有被双引号包括时,输出是没有区别的,如上面的例子所示。但如果有双引号,$@会将每个参数作为单独的参数输出,$*会把每个参数作为一个整体的字符串输出
[root@171-rc6-2-4 shell]cat test.sh
#!/bin/bash
funwithparm1(){
echo "所有参数作为一个字符串输出:\"\$*\" "
for i in "$*"
do
echo "$i"
done
echo "每个参数作为一个整体输出:\"\$@\" "
for j in "$@"
do
echo "$j"
done
}
funwithparm1 1 2 3 4
[root@171-rc6-2-4 shell]# ./test.sh
所有参数作为一个字符串输出:"$*"
1 2 3 4
每个参数作为一个整体输出:"$@"
1
2
3
4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)