shell 5参数
1. shell传递参数
我们可以在执行shell脚本时,向脚本传递参数。
| $n | n代表数字。$0表示执行的脚本名称,$1表示第1个参数,$2是第2个参数. shell默认支持9个参数,使用shift可以传递更多的参数。 |
| $#,${#*},${#@} | 传递到脚本的参数个数 |
| $$ | 脚本运行的当前进程的ID号 |
| $! | 后台运行的最后一个进程的ID号 |
| $? | 显示上个命令的执行情况。0表示没有错误,其他任何值表明有错误。 |
| $@ | 一个单字符显示所有向脚本传递的参数 |
| $* | 以一个单字符显示所有向脚本传递的参数 |
| $- | 显示shell使用的当前选项,与set命令功能相同 |
| ${*:1:3},${*:$#} | 表示多个参数 |
2. \(@与\)*区别
#!/bin/sh
#$@ vs $*
func1(){
echo \"\$@\"
for d in "$@";do
echo $d
done
}
func1 1 2 '3 4' '"5 6" 7'
func2(){
echo \$@
for d in $@;do
echo $d
done
}
func2 1 2 '3 4' '"5 6" 7'
func3(){
echo \"\$*\"
for d in "$*";do
echo $d
done
}
func3 1 2 '3 4' '"5 6" 7'
func4(){
echo \$*
for d in $*;do
echo $d
done
}
func4 1 2 '3 4' '"5 6" 7'
| 1 2 '3 4' '"5 6" 7' | $* | $@ |
| 没有双引号 $*和$@一样,都是按空格分隔打印参数 |
1 2 3 4 "5 6" 7 |
1 2 3 4 "5 6" 7 |
| 双引号 "$*"一行打印全部参数 "$@"挨个输出参数 |
1 2 3 4 "5 6" 7 | 1 2 3 4 "5 6" 7 |
| 脚本 | 参数:Tom Cat | 参数:"Tom Cat" |
| #!/bin/sh echo "传入参数:$*" echo "第一个参数:$1" echo "参数个数:$#" | 传入参数:Tom Cat 第一个参数:Tom 参数个数:2 | 传入参数:Tom Cat 第一个参数:Tom Cat 参数个数:1 |
浙公网安备 33010602011771号