Shell 通报参数

咱们能够在履行 Shell 剧本时,向剧本通报参数,剧本内获得参数的格局为:$nn 代表一个数字,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