Getopts 选项处理,是否可以添加非连字符 [FILE]?

J. *_*ker 6 shell options dash parameter getopts

我正在使用getopts所有需要高级选项解析的脚本,并且它与dash. 我熟悉标准的基本getopts用法,包括[-x][-x OPTION]

是否可以解析这样的选项?

 dash_script.sh FILE -x -z -o OPTION
 ## Or the inverse?
 dash_script.sh -x -z -o OPTION FILE
Run Code Online (Sandbox Code Playgroud)

dog*_*ane 7

脚本参数通常在选项之后。看看任何其他命令,例如cpor ls,您会发现情况就是如此。

因此,要处理:

dash_script.sh -x -z -o OPTION FILE
Run Code Online (Sandbox Code Playgroud)

您可以使用getopts如下所示:

while getopts xzo: option
do
    case "$option" in
        x) echo "x";;
        z) echo "z";;
        o) echo "o=$OPTARG";;
    esac
done
shift $(($OPTIND-1))
FILE="$1"
Run Code Online (Sandbox Code Playgroud)

处理选项后,getopts设置$OPTIND为第一个非选项参数的索引,在本例中为FILE