我有一个测试文件,记录最后一行的失败次数。我通过检查此行来确定测试是否通过。由于错误,通过测试将始终有一个失败。传递的行如下所示:
FAILED : - Failures = 1
迄今为止我的代码是:
if [[ $(tail -n 1 temp.txt) != "FAILED : - Failures = 1" ]]; then
echo "FAILED"
fi
但是,对于不同的软件分支,'FAILED'
一词已替换为'WARNING'
,例如
WARNING : - Failures = 1
我试图将一个正则表达式写成OR 'WARNING'
和'FAILED'
,但到目前为止它还没有用。
答案 0 :(得分:2)
你可以使用extglob:
if [[ $(tail -n 1 temp.txt) != @(WARNING|FAILED)" : - Failures = 1" ]]
then
echo "FAILED"
fi
@(pattern1|pattern2|..)
是一个与给定模式匹配的bash glob。
根据您的输入,您可以使用进一步的模式匹配来使匹配更具弹性。例如,包含单词“WARNING”或“FAILED”后跟单词“Failures”的字符串可与
匹配[[ $(tail -n 1 temp.txt) != *@(WARNING|FAILED)*"Failures"* ]]
有趣的事实:extglobs是正则表达式,它们只是不使用其他UNIX工具所使用的规范语法。