You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本多条件判断问题:双文件字符串匹配执行异常求助

问题原因与修复方案

你的脚本错误在于用[[ ... ]]包裹了grep命令,[[是Bash的条件测试结构,适用于字符串比较、文件属性测试等场景,而直接通过命令退出状态做判断时,不需要放在[[内部。

正确的写法是直接将两个grep命令用&&连接,作为if的判断条件:

#!/bin/bash
if grep -q "Build of target from_sms.compfiles.xf : PASS" failed.log && grep -q "All tests fine" test.log; then
  echo "PASS"
fi

关键说明

  • grep -q为静默执行模式,找到匹配内容时退出码为0(表示成功),未找到则返回非0值(表示失败)
  • if语句会直接判断命令的退出状态,只有当两个grep都返回0时,才会执行echo "PASS"
  • Bash中&&会按顺序执行命令,前一个命令执行成功才会运行后一个,刚好满足你“两个字符串均匹配成功”的逻辑需求

内容的提问来源于stack exchange,提问作者P.goutham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:02:02