在Bash中,选项标志值如何存储在变量中?

时间:2011-10-21 15:19:21

标签: bash

编写Bash脚本时,如何在命令行中作为选项标志的一部分提供命令行中的值?

例如以下内容:

./script --value=myText --otherValue=100

如何将myText100值存储在变量$text$num中?

2 个答案:

答案 0 :(得分:2)

使用getopts。

#!/bin/bash

while getopts ":a:" opt; do
  case $opt in
    a)
      echo "-a was triggered, Parameter: $OPTARG" >&2
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

答案 1 :(得分:0)

如果您真的需要使用--longoption,如果您可以坚持使用单个字符选项-a,请坚持使用的说法。 您可以执行以下操作:

#!/bin/bash
main()
{
    [[ $1 =~ "--value=(.*)" ]] && echo "First arg: $1"
    value=${BASH_REMATCH[1]}

    [[ $2 =~ "--otherValue=(.*)" ]] && echo "Second arg: $2"
    other=${BASH_REMATCH[1]}

    echo $value
    echo $other

    #doYourThing

    return 0

}

main $*

确保您正在运行bash 3.0。

$ echo $BASH_VERSION
3.00.16(1)-release

如果你有bash 4.x,请不要在正则表达式模式周围加上双引号。