【Shell】 脚本传递的参数

Shell 脚本获取参数主要使用$,下面是具体的用法介绍。

  1. 使用$获取参数。

    • $0表示当前运行的脚本名称。
    • $n表示传递的第n个参数。
    • $#可以获取传递的参数个数。
    • $*以字符串的形式显示所有的参数,每个参数之间使用空格分割。
      另外,也可使用$@获取所有的参数。
      假设编写的 Shell 文件为params.sh,内容如下:
    echo '1. use "$0" get current shell filename:'
    echo "Current shell filename is $0."
    
    echo '2. use "$#" cal how many params:'
    echo "Input $# params."
    
    echo '3. use "$2" get the second param:'
    echo $2
    
    echo '4. use "$*" output all params:'
    echo $*
    
    echo '5. use "$@" output all params:'
    echo $@
    

    运行命令sh params.sh param1 param2 param3得到的结果如下:

    1. use "$0" get current shell filename:
    Current shell filename is paramsDemo.sh.
    2. use "$#" cal how many params:
    Input 3 params.
    3. use "$2" get the second param:
    param2
    4. use "$*" output all params:
    param1 param2 param3
    5. use "$@" output all params:
    param1 param2 param3
    
  2. 脚本中使用的其他$命令。

    • $-显示 Shell 使用的当前选项,与set命令功能相同。
    • $$获取当前脚本运行的进程号。
    • $?获取上一条命令执行的返回码,通常情况下,返回码为 0 表示上一条命令运行正常。
  3. $@$*的区别。

    • 使用''包裹时或者不包裹时没有区别,所有的参数会当成一个字符串输出。
    • 使用""包裹时,"$@"会将所有的参数放入到数组中了,相当于分别输出各个参数。

    下面提供一个示例演示"$*"$@的不同之处:

    echo "-- \$* 演示 ---"
    for p in "$*"; do
       echo $p
    done
    
    echo "-- \$@ 演示 ---"
    for p in "$@"; do
       echo $p
    done
    

    当给上述脚本传入两个参数param1 param2后,输出结果如下:

    -- $* 演示 ---
    param1 param2
    -- $@ 演示 ---
    param1
    param2
    

    从这个例子可知,"$@"命令会将每个参数分散开来。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值