我试图用Bash getopts来解析一个-temp选项。我打电话给我这样的脚本:
./myscript -temp /foo/bar/someFile
这是我用来解析选项的代码。
while getopts "temp:shots:o:" option; do case $option in temp) TMPDIR="$OPTARG" ;; shots) NUMSHOTS="$OPTARG" ;; o) OUTFILE="$OPTARG" ;; *) usage ;; esac done shift $(($OPTIND - 1)) [ $# -lt 1 ] && usage
getopts只能解析短选项。
大多数系统还有一个外部getopt命令,但getopt不是标准的,并且通常被设计破坏,因为它不能安全地处理所有参数(带有空格和空参数的参数),只有GNU getopt可以安全地处理它们,但是只有您以GNU特定的方式使用它。
更简单的选择是既不使用,只需使用while循环迭代脚本的参数,并自行解析。