是否可以执行以下操作(以及如何执行?)(,为什么不呢?):
MATCH="--opt1 | --opt2"
while true ; do
case $1 in
$MATCH)
echo "option $2" found;
shift 2;;
*)
unknown option; exit 1;
esac
done
由于我不明白这不起作用的原因。但是,只有一个像 MATCH="--opt1" 这样的选择就可以了。
编辑1:可能的解决方案
可以简单地检查给定选项是否出现在多个允许选项的字符串中,而不是使用 case 语句,例如使用 grep 和 if。要完全动态地完成它,可以考虑以下解决方案,它也可能与 case 语句结合或嵌入到 case 语句中:
while true ; do
if [ -n "$(echo $MATCHES|grep -- $1)" ]; then
echo "found option $1 with value $2"
shift 2
fi
done