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
未知参数?
参数值
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在shell脚本中,可以使用特殊变量$1,$2,$3...来获取传递给脚本的参数。其中$1表示第一个参数,$2表示第二个参数,以此类推。例如,以下是一个简单的示例脚本,用于获取两个参数并将它们相加: ```shell #!/bin/bash num1=$1 num2=$2 sum=$((num1 + num2)) echo "The sum of $num1 and $num2 is: $sum" ``` 在执行此脚本时,需要在命令行中传递两个数字作为参数,例如: ```shell $ ./script.sh 2 3 The sum of 2 and 3 is: 5 ``` 在上面的示例中,$1和$2分别获取了命令行中传递的第一个和第二个参数,并将它们相加后输出了结果。 ### 回答2: 在shell脚本中,我们可以通过使用特殊变量来获取参数。这些特殊变量包括$0、$1、$2等。其中,$0代表脚本本身的名称,$1代表第一个参数,$2代表第二个参数,以此类推。 我们可以通过在脚本中使用这些特殊变量来获取命令行中传入的参数。例如,如果我们运行脚本如下: ```shell ./script.sh arg1 arg2 ``` 在脚本中,我们可以通过$1和$2来分别获取arg1和arg2的值。我们可以使用这些参数进行各种操作和计算。下面是一个简单的示例: ```shell #!/bin/bash echo "第一个参数为:$1" echo "第二个参数为:$2" result=$(($1 + $2)) echo "计算结果为:$result" ``` 当我们运行这个脚本时,会输出如下结果: ``` 第一个参数为:arg1 第二个参数为:arg2 计算结果为:arg1arg2 ``` 在这个例子中,我们通过$1和$2获取了传入的参数,然后使用这些参数进行了加法运算,并输出了计算结果。 总结起来,使用特殊变量$1、$2等可以轻松获取脚本中传入的参数,使得我们可以根据参数进行各种自定义操作。 ### 回答3: Shell脚本是一种用于执行一系列命令的脚本语言,它可以通过不同的方式获取参数。 一种常见的方式是通过特殊变量"$1"、"$2"等来获取命令行传入的参数。其中,"$0"代表脚本本身的名称,"$1"代表第一个参数,"$2"代表第二个参数,以此类推。例如,如果我们运行"sh myscript.sh hello world",在脚本中可以使用"$1"获取到"hello",使用"$2"获取到"world"。 另一种方式是使用命令行选项来获取参数。可以使用getopt命令或者使用内置的特殊变量"$OPTARG"来获取选项参数。getopt命令可以帮助解析命令行选项并将其存储在特殊变量中。使用这种方式可以为命令行传入的参数添加更多的灵活性和可扩展性。 除了上述方法外,还可以使用环境变量来获取参数。环境变量是一种特殊的变量,它们在整个系统中可见。通过设置环境变量,我们可以在脚本中获取到需要的参数。 总之,Shell脚本可以通过特殊变量、命令行选项和环境变量等方式获取参数。这些方式可以根据具体的需求和场景进行选择和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值