zhi*_*ong 5 error-handling bash
全部,
我正在检查最后一行文件中的错误信息,如果出现“错误”,我希望得到“是”结果。我的 shell 脚本如下所示:
[ $(tail -1 error.log | grep -E "Error") ] && echo "yes"
Run Code Online (Sandbox Code Playgroud)
然后我在标题中得到了类似上面的错误:
-bash: [: @: binary operator expected
Run Code Online (Sandbox Code Playgroud)
最后一行的错误信息如下:
[aaa,bbb,ccc, Error.ddd @ ]
Run Code Online (Sandbox Code Playgroud)
我认为这是因为错误消息,其中有 [@] 格式的内容导致了这个错误。但我不知道如何解决它。有没有人知道如何处理这个[@]问题。非常感谢
@csiu,非常感谢您的快速回复。
这里的技巧是使用双 "[" 如下:
[[ $(tail -1 error.log | grep -E "Error") ]] && echo "yes"
Run Code Online (Sandbox Code Playgroud)
既然我的评论有效,不妨将其发布在答案部分;)
使用双“[[”
[[ $(tail -1 error.log | grep -E "Error") ]] && echo "yes"
Run Code Online (Sandbox Code Playgroud)
相关文章:
test除了@csiu 的回答之外,根本不需要该命令。可以根据grep的退出状态进行操作:
tail -1 error.log | grep -qE "Error" && echo yes
Run Code Online (Sandbox Code Playgroud)
用于-q使 grep 的输出静音。它也更有效,因为一旦找到模式,grep 将立即退出。
由于我们只有一行输入,因此我们甚至不需要 grep:
[[ $(tail -1 error.log) == *Error* ]] && echo yes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16945 次 |
| 最近记录: |