1

我正在查看是否有一种方法可以getopts使用字符串而不是字符来处理开关。

例如,我想提供这样的东西:

script.ksh -file1 file1.txt -file2.txt

代替:

script.ksh -f file1.txt -g file2.txt

这对 unix 可行getopts吗?

4

2 回答 2

1

不,这是不可能的getopts。您必须自己进行解析,例如使用case开关:

while (($# > 0))
do
    case "$1" in
    -file1)
        shift
        file1=$1;;
    -file2)
        shift
        file2=$1;;
    esac
    shift
done
于 2010-08-05T16:09:57.503 回答
1

外部getopt(注意没有“s”)可以处理长选项,但它有其自身的缺点。

来自BashFAQ/035

永远不要使用 getopt(1)。getopt 无法处理空参数字符串或带有嵌入空格的参数。请忘记它曾经存在过。

于 2010-08-06T00:52:40.430 回答