Shell 通报参数
咱们能够在履行 Shell 剧本时,向剧本通报参数,剧本内获得参数的格局为:$n。n 代表一个数字,1 为履行剧本的第一个参数,2 为履行剧本的第二个参数,以此类推……
实例
以下实例咱们向剧本通报三个参数,并别离输入,此中 $0 为履行的文件名:
#!/bin/bash # author:【WEB手艺大学】教程 # url:xfitphysio.com echo "Shell 通报参数实例!"; echo "履行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";
为剧本设置可履行权限,并履行剧本,输入成果以下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 通报参数实例! 履行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3
别的,另有几个特别字符用来处置参数:
参数处置 | 申明 |
---|---|
$# | 通报到剧本的参数个数 |
$* | 以一个单字符串显现一切向剧本通报的参数。 如"$*"用「"」括起来的环境、以"$1 $2 … $n"的情势输入一切参数。 |
$$ | 剧本运转确当进步程ID号 |
$! | 背景运转的最初一个历程的ID号 |
$@ | 与$*不异,可是利用时加引号,并在引号中前往每一个参数。 如"$@"用「"」括起来的环境、以"$1" "$2" … "$n" 的情势输入一切参数。 |
$- | 显现Shell利用确当前选项,与set号令功效不异。 |
$? | 显现最初号令的加入状况。0表现不毛病,其余任何值标明有毛病。 |
#!/bin/bash # author:【WEB手艺大学】教程 # url:xfitphysio.com echo "Shell 通报参数实例!"; echo "第一个参数为:$1"; echo "参数个数为:$#"; echo "通报的参数作为一个字符串显现:$*";
履行剧本,输入成果以下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 通报参数实例! 第一个参数为:1 参数个数为:3 通报的参数作为一个字符串显现:1 2 3
$* 与 $@ 区分:
- 不异点:都是援用一切参数。
- 差别点:只要在双引号中表现出来。假定在剧本运转时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(通报了一个参数),而 "@" 等价于 "1" "2" "3"(通报了三个参数)。
#!/bin/bash # author:【WEB手艺大学】教程 # url:xfitphysio.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