测试标志是否有参数
Testing whether or not a flag has an argument
我解析命令行选项的典型设置是:
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
Returnsusage
。我的印象是这一行:
:) echo -e "Option -$OPTARG requires an argument."
然而,当 运行 上面的脚本使用不带参数的标志时,使用函数没有触发,回显也没有触发。
我做错了什么?
如果您使用 ./script.sh -c -i -c
或 ./script.sh -c
调用脚本,两者都会显示错误消息 Option -c requires an argument.
但是,当调用 ./script.sh -c -i
时,您正在为 -c
参数传递值“-i”,因此在参数解析结束时,您会得到 CONF=-c
和 INPUT not set
.
我解析命令行选项的典型设置是:
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
Returnsusage
。我的印象是这一行:
:) echo -e "Option -$OPTARG requires an argument."
然而,当 运行 上面的脚本使用不带参数的标志时,使用函数没有触发,回显也没有触发。
我做错了什么?
如果您使用 ./script.sh -c -i -c
或 ./script.sh -c
调用脚本,两者都会显示错误消息 Option -c requires an argument.
但是,当调用 ./script.sh -c -i
时,您正在为 -c
参数传递值“-i”,因此在参数解析结束时,您会得到 CONF=-c
和 INPUT not set
.