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
相关产品推荐
相关产品推荐

