gpt4 book ai didi

regex - 我应该如何在 case 语句中使用精确关键字匹配作为条件?

转载 作者:行者123 更新时间:2023-11-29 09:00:48 24 4
gpt4 key购买 nike

我正试图给自己写一些方便的脚本,以便 合法偷懒 更有效地工作,突然冒出这个问题:

给定一个很长的字符串 $LONGEST_EVER_STRING 和几个关键字字符串,例如 $A='foo bar' , $B='omg bbq'$C='stack overflow'

如何在case 语句中使用精确关键字匹配作为条件?

for word in $LONGEST_EVER_STRING; do
case $word in
any exact match in $A) do something ;;
any exact match in $B) do something ;;
any exact match in $C) do something ;;
*) do something else;;
esac
done

我知道我可以这样写,但它看起来真的很丑:

for word in $LONGEST_EVER_STRING; do
if [[ -n $(echo $A | fgrep -w $word) ]]; then
do something;
elif [[ -n $(echo $B | fgrep -w $word) ]]; then
do something;
elif [[ -n $(echo $C | fgrep -w $word) ]]; then
do something;
else
do something else;
fi
done

有没有人有一个优雅的解决方案?非常感谢!

最佳答案

您可以使用函数对 A、B、C 变量进行一些转换,然后:

shopt -s extglob
Ax="+(foo|bar)"
Bx="+(omg|bbq)"
Cx="+(stack|overflow)"
for word in $LONGEST_EVER_STRING; do
case $word in
$Ax) do something ;;
$Bx) do something ;;
$Cx) do something ;;
*) do something else;;
esac
done

关于regex - 我应该如何在 case 语句中使用精确关键字匹配作为条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21098177/

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