【发布时间】:2022-02-06 16:45:09
【问题描述】:
我想运行一个接受 3 个命令行选项-o|q|i 的脚本。我想让q 和o 而不是i 所以运行命令 has 看起来像:
script.sh -q <some-text> -o <some-other-text>
下面的代码没有强制要求。我怎样才能做到这一点?
for arg in "$@"
do
case $arg in
-q) req="$2"
shift shift ;;
-o) out="$2"
shift shift ;;
-i|) ind="$2"
shift shift ;;
esac
done
【问题讨论】:
-
@thatotherguy 如果未设置,我该如何显示
-help标志? -
你可能想看看
getopts -
您混合了两种不同(不兼容)的参数解析方式,
for循环和shift/$2方法。请改用getopts- 请参阅BashFAQ #35 和tzelleke's answer here。更多示例(和更复杂的方法)here. -
options 不是 optional 是没有意义的。
-
@tripleee 似乎是您正确的语义点?或者您是否暗示这不是在 shell 中设置强制参数的方法?我对其他想法持开放态度。
标签: bash shell command-line-arguments