zoukankan      html  css  js  c++  java
  • Shell脚本2

     

    5 Shell传递参数

    我们可以在执行 Shell 脚本时,向脚本传递参数,

    脚本内获取参数的格式为:$n代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

    1.1 实例

      以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:

          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

      另外,还有几个特殊字符用来处理参数:

        echo "Shell 传递参数实例!";

        echo "第一个参数为:$1";

        echo "参数个数为:$#";

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

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

    $ chmod +x test.sh

    $ ./test.sh 1 2 3

    Shell 传递参数实例!

    第一个参数为:1

    参数个数为:3

    传递的参数作为一个字符串显示:1 2 3

    $* $@ 区别:

    • 相同点:都是引用所有参数。
    • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 123,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

                         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

    Shell数组   

    Shell作为一种语言 也是能够定义数组的

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

    类似与 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0

    6.1 定义数组

      在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

      数组名=(2 ... n)

      例如:

          array_name=(value0 value1 value2 value3)

          或者

          array_name=(

          value0

          value1

          value2

          value3

          )

      还可以单独定义数组的各个分量:

          array_name[0]=value0

          array_name[1]=value1

          array_name[n]=valuen

      可以不使用连续的下标,而且下标的范围没有限制。

    6.2 读取数组

      读取数组元素值的一般格式是:

      ${数组名[下标]}

      例如:

          valuen=${array_name[n]}

        使用 @ 或者*符号可以获取数组中的所有元素,例如:

          echo ${array_name[@]}

          echo ${array_name[*]}

    6.3 获取数组的长度

        获取数组长度的方法与获取字符串长度的方法相同,例如:

        # 取得数组元素的个数

          length=${#array_name[@]}

        # 或者

          length=${#array_name[*]}

          # 取得数组单个元素的长度

          lengthn=${#array_name[n]}

    Shell基本运算符

      Shell 和其他编程语言一样,支持多种运算符,包括:

        • 运算符
        • 关系运算符
        • 布尔运算符
        • 字符串运算符
        • 文件测试运算符

      原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk exprexpr 最常用。

      expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

      例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ')

          #!/bin/bash

          val=`expr 2 + 2`

          echo "两数之和为 : $val"

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

          两数之和为 : 4

      两点注意:

        • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
        • 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

    7.1 算术运算符

        下表列出了常用的算术运算符,假定变量 a 10,变量 b 20

        格式 :expr m + n $((m+n)) 都是 先执行运算的 ` expr ...`----->$(())--->$((m+n))

    注意:条件表达式要放在方括号之间,并且要有空格,例如[$a==$b] 是错误的,必须写成 [ $a == $b ]

    7.1.1 实例

      注意:   if判断

          if [ $a == $b ]

          then

             echo "a 等于 b"

          fi

          if [ $a != $b ]

          then

           echo "a 不等于 b"

          fi

      算术运算符实例如下:

          a=10

          b=20

     

          val=`expr $a + $b`

          echo "a + b : $val"

     

          val=`expr $a - $b`

          echo "a - b : $val"

     

          val=`expr $a * $b`

          echo "a * b : $val"

     

          val=`expr $b / $a`

     

          echo "b / a : $val"

     

          val=`expr $b % $a`

          echo "b % a : $val"

     

          if [ $a == $b ]

          then

             echo "a 等于 b"

          fi

          if [ $a != $b ]

          then

             echo "a 不等于 b"

          fi

     

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

          a + b : 30

          a - b : -10

          a * b : 200

          b / a : 2

          b % a : 0

          a 不等于 b

      注意:

        • 乘号(*)前边必须加反斜杠()才能实现乘法运算;
        • if...then...fi 是条件语句,。
        • MAC shell expr 语法是:$((表达式))此处表达式中的 "*" 不需要转义符号 ""

     

    7.2 关系运算符 返回true或者false

        关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

        下表列出了常用的关系运算符,假定变量 a 10,变量 b 20

     

    7.2.1 实例

      关系运算符实例如下:

          a=10

          b=20

     

          if [ $a -eq $b ]

          then

             echo "$a -eq $b : a 等于 b"

          else

             echo "$a -eq $b: a 不等于 b"

          fi

          if [ $a -ne $b ]

          then

             echo "$a -ne $b: a 不等于 b"

          else

             echo "$a -ne $b : a 等于 b"

          fi

          if [ $a -gt $b ]

          then

             echo "$a -gt $b: a 大于 b"

          else

             echo "$a -gt $b: a 不大于 b"

          fi

          if [ $a -lt $b ]

          then

             echo "$a -lt $b: a 小于 b"

          else

             echo "$a -lt $b: a 不小于 b"

          fi

          if [ $a -ge $b ]

          then

             echo "$a -ge $b: a 大于或等于 b"

          else

             echo "$a -ge $b: a 小于 b"

          fi

          if [ $a -le $b ]

          then

             echo "$a -le $b: a 小于或等于 b"

          else

             echo "$a -le $b: a 大于 b"

          fi

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

        10 -eq 20: a 不等于 b

        10 -ne 20: a 不等于 b

        10 -gt 20: a 不大于 b

        10 -lt 20: a 小于 b

        10 -ge 20: a 小于 b

        10 -le 20: a 小于或等于 b

    7.3 布尔运算符

      下表列出了常用的布尔运算符,假定变量 a 10,变量 b 20

    7.3.1 实例

      布尔运算符实例如下:

        a=10

        b=20

     

        if [ $a != $b ]

        then

           echo "$a != $b : a 不等于 b"

        else

           echo "$a != $b: a 等于 b"

        fi

        if [ $a -lt 100 -a $b -gt 15 ]

        then

           echo "$a 小于 100 $b 大于 15 : 返回 true"

        else

           echo "$a 小于 100 $b 大于 15 : 返回 false"

        fi

        if [ $a -lt 100 -o $b -gt 100 ]

        then

           echo "$a 小于 100 $b 大于 100 : 返回 true"

        else

           echo "$a 小于 100 $b 大于 100 : 返回 false"

        fi

        if [ $a -lt 5 -o $b -gt 100 ]

        then

           echo "$a 小于 5 $b 大于 100 : 返回 true"

        else

           echo "$a 小于 5 $b 大于 100 : 返回 false"

        fi

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

     

        10 != 20 : a 不等于 b

     

        10 小于 100  20 大于 15 : 返回 true

     

        10 小于 100  20 大于 100 : 返回 true

     

        10 小于 5  20 大于 100 : 返回 false

    7.4 逻辑运算符

    以下介绍 Shell 的逻辑运算符,假定变量 a 10,变量 b 20:

    1.1.1 实例

    逻辑运算符实例如下:

    a=10

    b=20

     

    if [[ $a -lt 100 && $b -gt 100 ]]

    then

       echo "返回 true"

    else

       echo "返回 false"

    fi

     

    if [[ $a -lt 100 || $b -gt 100 ]]

    then

       echo "返回 true"

    else

       echo "返回 false"

    fi

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

    返回 false

    返回 true

    7.5 字符串运算符

    下表列出了常用的字符串运算符,假定变量 a "abc",变量 b "efg"

     

    1.1.1 实例

    字符串运算符实例如下:

    a="abc"

    b="efg"

     

    if [ $a = $b ]

    then

       echo "$a = $b : a 等于 b"

    else

       echo "$a = $b: a 不等于 b"

    fi

    if [ $a != $b ]

    then

       echo "$a != $b : a 不等于 b"

    else

       echo "$a != $b: a 等于 b"

    fi

    if [ -z $a ]

    then

       echo "-z $a : 字符串长度为 0"

    else

       echo "-z $a : 字符串长度不为 0"

    fi

    if [ -n "$a" ]

    then

       echo "-n $a : 字符串长度不为 0"

    else

       echo "-n $a : 字符串长度为 0"

    fi

    if [ $a ]

    then

       echo "$a : 字符串不为空"

    else

       echo "$a : 字符串为空"

    fi

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

    abc = efg: a 不等于 b

    abc != efg : a 不等于 b

    -z abc : 字符串长度不为 0

    -n abc : 字符串长度不为 0

    abc : 字符串不为空

     

    Shell echo命令

     

    Shell echo 是用于字符串的输出。命令格式:

     

    echo string    “”

     

    您可以使用echo实现更复杂的输出格式控制。

     

    8.1 显示普通字符串:

     

    echo "It is a test"

     

    这里的双引号完全可以省略,以下命令与上面实例效果一致:

     

    echo It is a test

     

    8.2 显示转义字符

     

    echo ""It is a test""  注意每个转意一个

     

     

    结果将是:

     

    "It is a test"

     

    同样,双引号也可以省略

     

    8.3 显示变量

     

    read 命令从标准输入(客户端)中读取一行,并把输入行的每个字段的值指定给 shell 变量

     

    #!/bin/sh

     

    read name

     

    echo "$name It is a test"

     

    以上代码保存为 test.shname 接收标准输入的变量,结果将是:

     

    [root@www ~]# sh test.sh

     

    OK                     #标准输入

     

    OK It is a test        #输出

     

     

    read 命令一个一个词组地接收输入的参数,每个词组需要使用空格进行分隔;如果输入的词组个数大于需要的参数个数,则多出的词组将被作为整体为最后一个参数接收。

     

    测试文件 test.sh 代码如下:

     

    read firstStr secondStr

     

    echo "第一个参数:$firstStr; 第二个参数:$secondStr"

     

    执行测试:

     

    $ sh test.sh

     

       

     

    第一个参数:; 第二个参数:  

    实例, 文件 test.sh:

    read -p "请输入一段文字:" -n 6 -t 5 -s password

    echo -e " password is $password"       是换行

    参数说明:

    • -p 输入提示文字
    • -n 输入字符长度限制(达到6位,自动结束)
    • -t 输入限时 5等待时间
    • -s 隐藏输入内容
    • -e开启转义字符

    $ sh test.sh

    请输入一段文字:

    password is asdfgh

    8.4 显示换行

    echo -e "OK! " # -e 开启转义

    echo "It it a test"

    输出结果:

    OK!

     

    It it a test

    8.5 显示不换行

    #!/bin/sh

    echo -e "OK! c" # -e 开启转义 c 不换行

    echo "It is a test"

    输出结果:

    OK! It is a test

    8.6显示结果定向至文件

    echo "It is a test" > myfile

    显示命令执行结果

    echo `date`

    注意: 这里使用的是反引号 `, 而不是单引号 '

    结果将显示当前日期

    Thu Jul 24 10:08:46 CST 2014

    Shell printf命令

    实例如下:

    echo "Hello, Shell"

    Hello, Shell

    printf "Hello, Shell "

    Hello, Shell

     

    接下来,我来用一个脚本来体现printf的强大功能:  类似于正则表达式

    printf "%-10s %-8s %-4s " 姓名 性别 体重kg  

    printf "%-10s %-8s %-4.2f " 郭靖  66.1234 

    printf "%-10s %-8s %-4.2f " 杨过  48.6543 

    printf "%-10s %-8s %-4.2f " 郭芙  47.9876 

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

    姓名     性别   体重kg

    郭靖           66.12

    杨过           48.65

    郭芙           47.99

    %s %c %d %f都是格式替代符

    %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。

    %-4.2f 指格式化为小数,其中.2指保留2位小数。

    Shell test命令

    Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

    9.1 数值测试

    实例演示:

    num1=100

    num2=100

    if test $[num1] -eq $[num2]

    then

        echo '两个数相等!'

    else

        echo '两个数不相等!'

    fi

    输出结果:

    两个数相等!

    代码中的 [] 执行基本的算数运算,如:   `exper ..` $(()) $[..]

    #!/bin/bash

     

    a=5

    b=6

     

    result=$[a+b] # 注意等号两边不能有空格    

    echo "result 为: $result"

    结果为:

    result 为: 11

    9.2 字符串测试

     

    实例演示:

    num1="ru1noob"

    num2="runoob"

    if test $num1 = $num2

    then

        echo '两个字符串相等!'

    else

        echo '两个字符串不相等!'

    fi

    输出结果:

    两个字符串不相等!

    9.3 文件测试

     

    实例演示:

    cd /bin

    if test -e ./bash

    then

        echo '文件已存在!'

    else

        echo '文件不存在!'

    fi

    输出结果:

    文件已存在!

    另外,Shell还提供了与( -a )、或( -o ) ( ! )三个逻辑操作符用于将测试条件连接起来,其

    cd /bin

    if test -e ./notFile -o -e ./bash

    then

        echo '至少有一个文件存在!'

    else

        echo '两个文件都不存在'

    fi

    输出结果:

    至少有一个文件存在!

    10 Shell流程控制

    10.1 if else

    10.1.1 if

    if 语句语法格式:

    if condition  表达式

    then

        command1

        command2

        ...

        commandN

    fi

    写成一行(适用于终端命令提示符):

    if [ $(ps -ef | grep -c "ssh") -gt 1 ]; 

    then echo "true";

     fi

     

    [] 条件判断

    Ps -ef:显示所有进程

     grep -c:显示进程的数量

    -gt:大于

    末尾的fi就是if倒过来拼写,后面还会遇到类似的。

    10.1.2 if else

    if else 语法格式:

    if condition

    then

        command1

        command2

        ...

        commandN

    else

        command

    fi

    10.1.3 if else-if else

    if else-if else 语法格式:

    if condition1

    then

        command1

    elif condition2    elif---》类似于java中的(else if

     

    then 

        command2

    else

        commandN

    fi

    以下实例判断两个变量是否相等:

     

    a=10

     

    b=20

     

    if [ $a == $b ]

     

    then

     

       echo "a 等于 b"

     

    elif [ $a -gt $b ]

     

    then

     

       echo "a 大于 b"

     

    elif [ $a -lt $b ]

     

    then

     

       echo "a 小于 b"

     

    else

     

       echo "没有符合的条件"

     

    fi

     

    输出结果:

     

    a 小于 b

     

    if else语句经常与test命令结合使用,如下所示:

     

    num1=$[2*3]

     

    num2=$[1+5]

     

    if test $[num1] -eq $[num2]

     

    then

     

        echo '两个数字相等!'

     

    else

     

        echo '两个数字不相等!'

     

    fi

     

    输出结果:

     

    两个数字相等!

    10.2 for 循环

    与其他编程语言类似,Shell支持for循环。

    for循环一般格式为:

    for var in item1 item2 ... itemN

    do

        command1

        command2

        ...

        commandN

    done

    写成一行:

    for var in item1 item2 ... itemN; do command1; command2… done;

    当变量值在列表里,for循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的shell命令和语句。in列表可以包含替换、字符串和文件名。

    in列表是可选的,如果不用它,for循环使用命令行的位置参数。

    例如,顺序输出当前列表中的数字:

    for loop in 1 2 3 4 5

    do

        echo "The value is: $loop"

    done

    输出结果:

    The value is: 1

    The value is: 2

    The value is: 3

    The value is: 4

    The value is: 5

    顺序输出字符串中的字符:

    for str in 'This is a string' ls /etc

    do

        echo $str

    done

    输出结果:

    This is a string

    10.3 while 语句

     

     

    while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:

     

    while condition

     

    do

     

        command

     

    done

     

    以下是一个基本的while循环,测试条件是:如果int小于等于5,那么条件返回真。int0开始,每次循环处理时,int1。运行上述脚本,返回数字15,然后终止。

     

    #!/bin/bash

     

    int=1

     

    while(( $int<=5 ))

     

    do

     

        echo $int

     

        let "int++"

     

    done

     

    运行脚本,输出:

     

    1

     

    2

     

    3

     

    4

     

    5

     

    命令:let

    let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。

    实例:

    自加操作:let no++ 

    自减操作:let no-- 

    简写形式 let no+=10let no-=20,分别等同于 let no=no+10let no=no-20

    以下实例计算 a b 两个表达式,并输出结果:

    #!/bin/bash

    let a=5+4

    let b=9-3 

    echo $a $b

    以上实例执行结果为:

    9 6

    while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量FILM,按<Ctrl-D>结束循环。

    echo '按下 <CTRL-D> 退出'

    echo -n '输入你最喜欢的学校: '

    while read FILM

    do

        echo "是的!$FILM 是一个好学校"

    done

    运行脚本,输出类似下面:

    按下 <CTRL-D> 退出

    输入你最喜欢的学校:北网

    是的!北网 是一个好学校

    10.4 无限循环

    无限循环语法格式:

    while :

    do

        command

    done

    或者

    while true

    do

        command

    done

    10.5 until 循环

    until 循环执行一系列命令直至条件为 true 时停止。

    until 循环与 while 循环在处理方式上刚好相反。

    一般 while 循环优于 until 循环,但在某些时候也只是极少数情况下,until 循环更加有用。

    until 语法格式:

    until condition   while connn

    do

        command

    done

    condition 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环。

    以下实例我们使用 until 命令来输出 0 ~ 9 的数字:

    #!/bin/bash

     

    a=0

     

    until [ ! $a -lt 10 ]

    do

       echo $a

       a=`expr $a + 1`

    done

    运行结果:

    输出结果为:

     

    0

     

    1

     

    2

     

    3

     

    4

     

    5

     

    6

     

    7

     

    8

     

    9

     

    10.6 case

     

    Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

     

    case  in     for  in

     

    模式1)

     

        command1

     

        command2

     

        ...

     

        commandN

     

        ;;

     

    模式2

     

        command1

     

        command2

     

        ...

        commandN

        ;;

    esac

    case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;

    取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

    下面的脚本提示输入14,与每一种模式进行匹配:

    echo '输入 1 4 之间的数字:'

    echo '你输入的数字为:'

    read aNum

    case $aNum in

        1)  echo '你选择了 1'

        ;;

        2)  echo '你选择了 2'

        ;;

        3)  echo '你选择了 3'

        ;;

        4)  echo '你选择了 4'

        ;;

        *)  echo '你没有输入 1 4 之间的数字'

        ;;

    esac

    输入不同的内容,会有不同的结果,例如:

    输入 1  4 之间的数字:

    你输入的数字为:

    3

    你选择了 3

    10.7 跳出循环

    在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:breakcontinue

    10.7.1 break命令

    break命令允许跳出所有循环(终止执行后面的所有循环)。

    下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。

    #!/bin/bash

    while :

    do

        echo -n "输入 1 5 之间的数字:"

        read aNum

        case $aNum in

            1|2|3|4|5) echo "你输入的数字为 $aNum!"

            ;;

            *) echo "你输入的数字不是 1 5 之间的! 游戏结束"

                break

            ;;

        esac

    done

    执行以上代码,输出结果为:

    输入 1  5 之间的数字:3

    你输入的数字为 3!

    输入 1  5 之间的数字:7

    你输入的数字不是 1  5 之间的游戏结束

    10.7.2 continue

    continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

    对上面的例子进行修改:

    #!/bin/bash

    while :

    do

        echo -n "输入 1 5 之间的数字: "

        read aNum

        case $aNum in

            1|2|3|4|5) echo "你输入的数字为 $aNum!"

            ;;

            *) echo "你输入的数字不是 1 5 之间的!"

                continue

                echo "游戏结束"

            ;;

        esac

    done

    运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo "游戏结束" 永远不会被执行。

    10.8 esac

    case需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两个分号表示break

    11 Shell函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。

    demoFun(){    相当于定义个方法

        echo "这是我的第一个 shell 函数!"

    }

    echo "-----函数开始执行-----"

    demoFun   开始执行方法

    echo "-----函数执行完毕-----"

    输出结果:

    -----函数开始执行-----

    这是我的第一个 shell 函数!

    -----函数执行完毕-----

    下面定义一个带有return语句的函数:

    funWithReturn(){

        echo "这个函数会对输入的两个数字进行相加运算..."

        echo "输入第一个数字: "

        read aNum

        echo "输入第二个数字: "

        read anotherNum

        echo "两个数字分别为 $aNum $anotherNum !"

        return $(($aNum+$anotherNum))

    }

    funWithReturn

    echo "输入的两个数字之和为 $? !"  函数有返回值 通过 $ ?来获取返回值

    输出类似下面:

    这个函数会对输入的两个数字进行相加运算...

    输入第一个数字

    1

    输入第二个数字

    2

    两个数字分别为 1  2 !

    输入的两个数字之和为 3 !

    函数返回值在调用该函数后通过 $? 来获得。

    注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。

    调用函数仅使用其函数名即可。

     

    11.1 函数参数

     

    Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...

     

    带参数的函数示例:

     

    funWithParam(){

     

        echo "第一个参数为 $1 !"

     

        echo "第二个参数为 $2 !"

     

        echo "第十个参数为 $10 !"   

     

        echo "第十个参数为 ${10} !"

     

        echo "第十一个参数为 ${11} !"

     

        echo "参数总数有 $# !"

     

        echo "作为一个字符串输出所有参数 $* !"

     

    }

     

    funWithParam 1 2 3 4 5 6 7 8 9 34 73    ./pass.sh

     

    输出结果:

     

    第一个参数为 1 !

     

    第二个参数为 2 !

     

    第十个参数为 10 !

     

     

     

    $10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

     

     

     

    第十个参数为 34 !

     

    第十一个参数为 73 !

     

    参数总数有 11 !

     

    作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !

     

     

     

    注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

     

     

     

     

  • 相关阅读:
    Go语言程序调试
    IDA FLIRT使用
    通过PEB寻找函数地址
    使用IWebBrowser2操控浏览器页面测试(IE)
    虚拟机检测手段
    初步了解PE分析
    CG-CTF simple-machine
    调试器原理初步学习
    简单shellcode编写
    使用ReportViewer的远程模式
  • 原文地址:https://www.cnblogs.com/JBLi/p/10689481.html
Copyright © 2011-2022 走看看