我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
1.详细参数介绍:
参数 | 说明 |
$0 | 当前执行文件的名称 |
$1......$99 | 第1个参数......第99个参数 |
$# | 传递到脚本的参数个数(总共传递了多少个参数) |
$* | 将传递的所有参数,以一个字符串的形式返回。如"$*"用引号括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 |
$@ | 与$*差不多。但是"$@"如果用引号括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
实例:paramTest.sh
#!/bin/bash
echo "文件名:$0"
echo "第1个参数:$1"
echo "第2个参数:$2"
echo "第3个参数:$3"
echo "第4个参数:$4"
echo "第5个参数:$5"
echo "第6个参数:$6"
echo "第7个参数:$7"
echo "............................."
echo "总共传递参数个数:${#}"
echo "............................."
echo "\$*将所有参数以一个字符串形式返回:$*"
echo "............................."
echo "脚本运行的当前进程ID:$$"
echo "............................."
echo "\$@将所有参数以一个字符串形式返回:$@"
echo "............................."
echo "显示最后命令的退出状态:$?"
执行该shell脚本,命令:./paramTest.sh 1 2 3 4 5 6 7
文件名:./paramTest.sh
第1个参数:1
第2个参数:2
第3个参数:3
第4个参数:4
第5个参数:5
第6个参数:6
第7个参数:7
.............................
总共传递参数个数:7
.............................
$*将所有参数以一个字符串形式返回:1 2 3 4 5 6 7
.............................
脚本运行的当前进程ID:1490
.............................
$@将所有参数以一个字符串形式返回:1 2 3 4 5 6 7
.............................
显示最后命令的退出状态:0
2.$*和$@的区别
- 相同点:都是引用所有参数。
- 不同点:只有在加双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
echo "---加双引号\$*演示---"
for i in "$*";do
echo ${i}
done
echo "............................."
echo "---加双引号\$@演示---"
for i in "$@";do
echo ${i}
done
结果:执行: ./paramTest.sh 1 2 3 4 5 6 7
加双引号$*演示
1 2 3 4 5 6 7
.............................
加双引号$@演示
1
2
3
4
5
6
7
本文仅用作:学习笔记
参考:https://www.runoob.com/linux/linux-shell-passing-arguments.html