getopts没有解析我的命令行选项

时间:2013-07-07 08:20:15

标签: bash getopts

我正在运行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

1 个答案:

答案 0 :(得分:3)

与(较旧的)getopt不同,getopts不会重新排列放置选项的参数 第一。因此,在

./getopt.sh arg1 -s opt1
只要看到非选项arg1

选项解析就会停止。