getopts:可选$ OPT_ARG

时间:2012-10-24 18:20:00

标签: getopts

我希望创建一个可以同时运行-u和-u gtest_filter =

的脚本

目前我有

  

而getopts u:opt 2>的/ dev / null的;做

     

案例$ opt in

     

u)UNIT_TEST = 1; UNIT_TEST_OPTION = $ OPTARG ;;

     

?)用法>& 2;退出1 ;;

     

ESAC

     

完成

但要强制要求参数。我怎样才能解决这个问题,以便-u也能正常工作。

1 个答案:

答案 0 :(得分:0)

使用u代替u:(删除冒号)。然后检查下一个参数,看它是否以-

开头
while getopts u opt 2> /dev/null; do
case $opt in
u)
    UNIT_TEST=1;
    # Test first character of next option
    if [ "$(echo "$2" | head -c 1)" != "-" ]; then
        UNIT_TEST_OPTION=$2
        shift # Move on to next option
    fi
    ;;
?) usage >&2; exit 1 ;;
esac
done