如何在Curl与Grep中匹配多个字符串?
实现curl输出的多字符串匹配判断
要在grep里同时匹配多个字符串(满足任意一个即可),有两种简单的实现方式,同时帮你修正了原代码里的语法问题:
方式1:用扩展正则表达式匹配“或”逻辑
通过grep -E启用扩展正则,用|分隔多个匹配目标:
if curl https://yahoo.com | grep -qE "yahoo|google" then echo "包含yahoo或google" else echo "不包含yahoo或google" fi
-E:开启扩展正则,让|直接表示“或”的逻辑-q:静默模式,只返回匹配状态,不输出具体匹配内容- 只要curl输出里存在
yahoo或google任意一个字符串,grep就会返回成功状态,进入if分支
方式2:用多参数指定多个匹配项
如果不想用正则,可以重复使用-e参数来添加多个匹配字符串:
if curl https://yahoo.com | grep -q -e "yahoo" -e "google" then echo "包含yahoo或google" else echo "不包含yahoo或google" fi
-e:每个-e后面跟一个独立的匹配字符串,任意一个匹配成功即返回成功状态
额外修正说明
原代码存在两个问题:
if语句后缺少then关键字,bash语法要求if块必须以then开头- echo的提示文本和你的需求不符(原代码写了hotmail、gmail),已调整为对应需求的表述
内容的提问来源于stack exchange,提问作者Software Fan
相关产品推荐
相关产品推荐

