while getopts gpr: | gpd: name
do
case $name in
g) echo " -g";;
p) echo " -p";;
r) echo " -r with '$OPTARG'";;
d) echo " -d with '$OPTARG'";;
esac
done
我知道这是错误的。我想那样写,这样它就可以显示我需要它做什么。
带有 g、p、d 或 r 选项的脚本。关键是OR。
我试着用谷歌搜索它,阅读手册,找到了许多简单的例子。 问题是是否有办法做到这一点,或者 getopts 不支持这种行为。
最佳答案
我会这样做:
have_r=false
have_d=false
while getopts gpr:d: name; do
case $name in
g) echo " -g";;
p) echo " -p";;
r) echo " -r with '$OPTARG'"; have_r=true;;
d) echo " -d with '$OPTARG'"; have_d=true;;
esac
done
shift $((OPTIND - 1))
if $have_r && $have_d; then
echo "error, cannot use both -r and -d" >&2
exit 1
fi
关于linux - 需要将 getopts 与一个参数或另一个参数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22489628/