Shell 参数获取的两种方式

方式一

示例

  新建一个test.sh文件

#!/bin/bash
echo "shell 名称 = $0"
echo "参数1 = $1"
echo "参数2 = $2"
echo "参数3 = $3"
echo "参数4 = $4"
echo "参数5 = $5"

  执行脚本 : sh test.sh 5 6 3 6 2

  输出结果

shell 名称 = test.sh
参数1 = 5
参数2 = 6
参数3 = 3
参数4 = 6
参数5 = 2

  使用该方式有两点需要注意的地方:"$0" 表示的是脚本本身
  优点 : 获取参数方便、简洁
  缺点 :必须按照指定的顺序输入参数,中间不能漏参数。否则参数将会产生错乱。

方式二 使用 getopts 方式获取

  如果需要实现类似 rm -r -f 指定参数值的方式,则推荐使用此种方式。
  使用该方式需要使用到Shell内置的函数"getopts"。
  在使用之前你需要知道一下几个内置参数的意义:

  1. optstring option :字符串,当中为参数选项,会逐个匹配。
  2. varname :每次匹配成功的选项
  3. arg :参数值
  4. $OPTIND :option index,会逐个递增,初始值为1
  5. $OPTARG :option argument,不同情况下会有不同的值

  该函数的具体使用方式 : getopts [option[:]] VARIABLE
  参数说明:

  • [option[:]] 表示参数,以"🅰️b:c:"的方式设置
    #####注意细节:
  1. 以":"开头时:getopts不会提示错误信息,会区分invalid option错误和miss option argument,两种错误的值不一样。invalid option错误时,VARIABLE会被设为*?。为出问题的option。miss option argument时,VARIABLE会被设为*。$OPTARG为出问题的option。
  2. 不以":"开头时:getopts会提示错误信息。会根据invalid option错误和miss option argument。提示两种不同的错误。VARIABLE都会被设为?*。$OPTARG都为空
  3. 如果option后面跟了":"表示该option可以接收参数,参数(argument)会被放在$OPTARG中。
#!/bin/bash

while getopts ":a:p:n:s:" opt
do
    case $opt in
        n)
            echo "$OPTARG"
        ;;
        s)
            echo "$OPTARG"
        ;;
        a)
            echo "$OPTARG"
        ;;
        p)
            echo "$OPTARG"
        ;;
        *)
            echo "未知参数$opt"
            echo "参数值$OPTARG"
        ;;
        ?)
            echo "未知参数$opt"
            echo "参数值$OPTARG"
        ;;
    esac
done

  执行:sh getopt.sh -a 12 -p 32 -s string -n 你好 -r 世界
  输出:

12
32
string
你好
install.sh: 非法选项 -- r
未知参数?
参数值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值