3

我正在运行 bash 4.2 版,并且正在尝试使用内置命令解析命令行参数getopts

但是getopts似乎没有正确解析它,如果-s不是第一个参数,它不会被解析

-s未解析:

%> ./getopt.sh aaa -s aaa
aaa

这个得到了解析

%> ./getopt.sh -s aaa
s: aaa
aaa

脚本在这里:

#!/bin/bash

while getopts "bs:" opt
do
    case $opt in
        s)
            echo "s: $OPTARG"
            ;;
        *)
            echo not supported
            ;;
    esac
    shift
done

echo $1
4

1 回答 1

4

与 (older) 不同getoptgetopts不会重新排列参数以将选项放在首位。因此,在

./getopt.sh arg1 -s opt1

一旦看到非选项,选项解析就会停止arg1

于 2013-07-07T08:55:43.190 回答