我解析命令行选项的典型设置是:
CONF=""
INPUT=""
while getopts ":c:i:" FLAG; do
case $FLAG in
i) INPUT=$OPTARG;;
c) CONF=$OPTARG;;
\?) echo -e "\nInvalid option: -$OPTARG"
usage;;
:) echo -e "Option -$OPTARG requires an argument."
usage;;
esac
done
if [ "$#" -eq 0 ]; then
usage
fi
我正在寻找一种方法来捕获何时提供有效标志但没有参数 - 例如:
./Script.sh -c -i
返回usage
。我的印象是这一行:
:) echo -e "Option -$OPTARG requires an argument."
处理这个但是当使用不带参数的标志运行上面的脚本时,使用函数不会触发,也不是echo。
我做错了什么?
答案 0 :(得分:1)
如果您使用./script.sh -c -i -c
或./script.sh -c
调用脚本,则两者都会显示错误消息Option -c requires an argument.
然而,在调用./script.sh -c -i
时,您正在传递价值" -i"对于-c
参数,以便在参数解析结束时,您最终得到CONF=-c
和INPUT not set
。