1.Shell 传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,Linux系统中的Shell脚本语言已经内设了用于接收参数的变量,变量之间可以使用空格间隔。
例如$0对应的是当前Shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,
而$1、$2、$3……则分别对应着第N个位置的参数值,如图4-15所示
尝试编写一个脚本程序示例:
[root@linuxprobe ~]# vim example.sh #!/bin/bash echo "当前脚本名称为$0" echo "总共有$#个参数,分别是$*。" echo "第1个参数为$1,第5个为$5。" [root@linuxprobe ~]# sh example.sh one two three four five six 当前脚本名称为example.sh 总共有6个参数,分别是one two three four five six。 第1个参数为one,第5个为five。
$* 与 $@ 区别:
- 相同点:都是引用所有参数。
- 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
#!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "-- $* 演示 ---" for i in "$*"; do echo $i done echo "-- $@ 演示 ---" for i in "$@"; do echo $i done
执行脚本,输出结果如下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 -- $* 演示 --- 1 2 3 -- $@ 演示 --- 1 2 3