我们得以在试行 Shell
脚本时,向脚本传递参数,脚本内获得参数的格式为:$n。n 代表3个数字,1为进行脚本的第3个参数,二 为实施脚本的第三个参数,就那样类推……

八.传递参数
    壹.行使$n来传递参数($0表示文件名)
    例子:
    echo “试行的文书名:$0”;
    echo “第2个参数为:$一”;
    echo “首个参数为:$3”;

Shell 传递参数

作者们能够在实行 Shell
脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表1个数字,1为执行脚本的第叁个参数,二 为试行脚本的第二个参数,依此类推……

以下实例大家向脚本传递多少个参数,并分别出口,个中 $0 为实行的文书名:

     ./test.sh 1 2
    输出结果为:
    试行的文书名:test.sh
    第1个参数为:一
    第1个参数为:2
二.特殊字符管理参数(那当中分别尚未测试)
    $# : 传递到剧本的参数的个数
    $* : 以3个字眼符串展现全数向脚本传递的参数(“$*”以”$1 $2 …
$n”)
    $$ : 脚本运行的眼下进度的ID号
    $! : 后台运行的尾声1个历程的ID号
    $@ : 与$*平等,不过使用的时候加引号(“$@”以”$壹” “$二” … “$n”)
    $- : 显示Shell使用的脚下挑选,与set命令成效雷同
    $? : 展现最后命令的退出状态.0表示平昔不错误,其余任何值表名有错误
3.例子:
    echo “Shell 传递参数实例!”;
    echo “第1个参数为: $一”;
    echo “参数的个数为: $#”;
    echo “传递的参数作为贰个字符串呈现: $*参数字传送递和数组,Shell传递参数。”;

实例

以下实例我们向脚本传递多少个参数,并分别出口,个中 $0 为实施的公文名:

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.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:菜鸟教程
# url:www.runoob.com

echo "Shell 传递参数实例!";
echo "第一个参数为:$1";

echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

施行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3

$* 与 $@ 区别:

  • 同样点:都以引用全部参数。
  • 分裂点:唯有在双引号中反映出来。如若在剧本运转时写了八个参数
    一、2、三,,则 ” * ” 等价于 “一 2 3″(传递了一个参数),而 “@” 等价于
    “一” “二” “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
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

    ./test.sh 1 2 3
    输出结果为:
    shell 传递参数实例!
    第三个参数: 一
    参数个个数为: 叁
    传递的参数作为贰个字符串呈现: 壹 二 三
4.$*与$@区别:
    一样点:都以引用全数参数
    不一致点:唯有在双引号中显示出来.若是在本子运行时写了几个参数壹 二 3,则”*”等价与”1 2 3″,而”#”等价于”1″ “2” “3”
5.实例:
    for i in “$*”; do
       echo $i
    done

为脚本设置可进行权限,并实行脚本

    for i in “$@”; do
       echo $i
    done

$ chmod +x test.sh 
$ ./test.sh 1 2 3

    ./test.sh 1 2 3
     实施结果:
     1 2 3
    1
    2
    3
    能够看到@使用for是自带换行

出口结果如下所示:

玖.数组(Bash
Shell只帮忙壹维数组,数组成分的下标由0开端,Shell数组用括号表示,成分用空格分开)
     1.语法格式:
        array_name=(value1 … valuen)
        例:my-array=(A B “C” D)
2.概念数组
       array_name[0]=value0
       array_name[1]=value1
      array_name[2]=value2
三.读取数组
      ${array_name[index]}
4.到手数组中的全部要素
     ${array_澳门金沙国际,name[*]}
     ${array_name[@]}
5.获得数组的尺寸
    ${#array_name[*]}
    ${#array_name[@]}

Shell 传递参数实例!

实践的文件名:./test.sh

第二个参数为:1

第四个参数为:二

其八个参数为:三

 

其余,还有多少个特殊字符用来处理参数:

做的实例一:

澳门金沙国际 1

#!/bin/bash

echo "Shell 传递参数实例!";
echo "第一个参数为:$1";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

#使用$*输出
echo “使用星号输出:”
for i in “$*”; do
echo $i
done

试行脚本

#使用$@输出
echo “使用第一种方法进行输出:”
for j in “$@”; do
echo $j
done

$ chmod +x test.sh 
$ ./test.sh 1 2 3

做的实例贰:

输出结果如下所示:

#!/bin/bash
#Shell参数字传送递
echo “—-测试参数字传送递的例子:—–“;
echo “实践的文本名字为 : $0”;
echo “第三个参数为 : $1”;
echo “第二个参数为 : $二”;

Shell 传递参数实例!

先是个参数为:一

参数个数为:三

传送的参数作为三个字符串显示:1 二 三

#特殊字符处理参数,$*与$@的不同
echo “—-测试特殊字符管理参数:—-“;
echo “参数的个数为 : $#”;
echo “字符串的款式显得 : $*”;
echo “字符串的样式体现二 : $@”;

* 与 @ 区别:

#数组的内容
echo “—-测试数组的骨干选用—-“
my_arr=(A B “C” D);
my_arr2[0]=$1;
my_arr2[1]=$2;
my_arr2[2]=$3;
echo “读取数组:${my_arr[3]}”;
echo “数组中的全体因素:${my_arr[*]}”;
echo “数组中的全体因素二:${my_arr[@]}”;
echo “数组my_arr的数老董度为:${#my_arr[*]}”;
echo “数组my_arr二的数主任度为:${#my_arr2[@]}”;
echo “数组my_arr2的1体因素为:${my_arr2[*]}”;

  • 一样点:都是引用全部参数。
  • 不相同点:只有在双引号中反映出来。假若在剧本运维时写了八个参数
    一、二、三,,则 ” * ” 等价于 “一 贰 三”(传递了2个参数),而 “@” 等价于
    “一” “贰” “三”(传递了三个参数)。

    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

相关文章