shell 传递参数
可以在执行shell脚本时,向脚本传递参数,脚本获取参数格式:$n. n代表数字,1为脚本的第一个参数,2为执行脚本的第二个参数,一次类推。
例:
#文件名test.sh
echo "shell 传递实参";
echo "执行文件名 $0";
echo "第一个参数 $1"
echo "第二个参数 $2";
执行脚本
$ chmod +x test.sh #修改文件为可执行文件
$ ./test.sh 1 2
shell传递实参
执行文件名 ./test.sh
第一个参数1
第二个参数2
特殊符号处理参数
参数处理 | 说明 |
---|---|
$# | 传递到脚本的个数 |
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID |
$! | 后台运行的最后一个进程ID号 |
$@ | 与$#相似,使用时加双引号,并在引号中返还每个参数 |
$- | 显示Shell使用的当前选项,与set命令相同 |
$? | 显示最后的命令退出状态。0表示无错误。 |
例:
#test1.sh
echo "Shell 传递参数实例!"
echo "第一个参数: $1"
echo "参数的个数: $#"
echo "传递的参数作为一个字符串显示:$*"
执行脚本,输出结果
$ chmod +x test1.sh
$ ./test.sh 1 2
Shell 传递参数实例
第一个参数: 1
参数个数: 2
传递的参数作为一个字符串显示; 1 2
∗
与
* 与
∗与@区别:
只有在双引号中体现出来。假设在脚本运行时写了三个参数1 ,2 ,3. 则“*”等价于“1 2 3”(传递了一个参数),而“@”等价于“1” “2” “3”(传递了三个参数)。
例:
#test2.sh
echo "---$*----演示"
for i in "$*"; do
echo $i
done
echo "----$@---演示"
for i in "$@"; do
echo $i
done
执行结果:
$chmod +x test2.sh
$./test2.sh 1 2 3
---$*---演示
1 2 3
---$@---演示
1
2
3