【发布时间】:2020-10-15 13:41:29
【问题描述】:
我想构建一个带有 getopts 的脚本,该脚本在未设置 $OPTARG 时在标志中继续。 我的脚本如下所示:
OPTIONS=':dBhmtb:P:'
while getopts $OPTIONS OPTION
do
case "$OPTION" in
m ) echo "m"
t ) echo "t"
d ) echo "d";;
h ) echo "h";;
B ) echo "b";;
r ) echo "r";;
b ) echo "b"
P ) echo hi;;
#continue here
\? ) echo "?";;
:) echo "test -$OPTARG requieres an argument" >&2
esac
done
当没有为 -P 设置 $OPTARG 时,我的目标是继续我的评论。
运行 ./test -P 后我得到的只是:
test -P requieres an argument
然后它在循环之后继续,但我想在 -P 标志中继续。
全清?
有什么想法吗?
【问题讨论】:
-
如果您能在看到“-P”标志时提供您想要实现的行为的简短描述,将会有所帮助。
-
'-P $OPTARG' 标志应该初始化一个变量,但是当 -P $OPTARG 没有设置时,脚本应该寻找另一个没有在循环中设置的变量并且当它们都没有初始化时,脚本应该退出。
-
强烈建议不要在case分支中放入太多逻辑:只设置变量,然后设置默认值或其他错误情况的逻辑(例如您最多可以指定一个-a或 -b 或 -c) 应在处理完选项后进行编码。
-
你能举个例子吗?
-
then it continues after the loop but I want to continue in the -P flag“继续-P标志”是什么意思?
标签: bash scripting flags continue getopts