gpt4 book ai didi

bash - 在 Case 语句中使用具有多个选项的变量

转载 作者:行者123 更新时间:2023-11-29 09:34:49 26 4
gpt4 key购买 nike

是否可以执行以下操作(以及如何操作?)(为什么不可以?):

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

最佳答案

当嵌入参数值中时,管道字符按字面意思处理,而不是语法。你必须使用多个字符串:

while true; do
case $1 in
$MATCH1 | $MATCH2 )
# etc

关于bash - 在 Case 语句中使用具有多个选项的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19224910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com