In Bash, how can option flag values be stored in variables?
本问题已经有最佳答案,请猛点这里访问。
在编写bash脚本时,如果在命令行中作为选项标志的一部分提供,如何从命令行获取值?
例如,在以下内容中:
1 | ./script --value=myText --otherValue=100 |
如何将
使用Goopts。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/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。
1 2 | $ echo $BASH_VERSION 3.00.16(1)-release |
如果您有bash 4.x,不要在regex模式周围加双引号。