我想运行一个运行 grep 命令并输出结果的脚本。我希望 grep 返回一行,但想处理没有匹配行的情况(例如,如果 grep 文件不存在)。有没有办法执行类似的东西
line = grep ...
if line is empty
print "\n"
else
print line
您需要做的就是检查 grep 的返回码。
grep
如果匹配行返回 0,如果没有匹配行返回 1。如果发生错误,则返回大于 1 的值。
$ echo "hi" | grep hi
hi
$ echo $?
0
$ echo "hi" | grep hello
$ echo $?
1
在某些情况下(例如当您set -e
在 bash 脚本中时),您不想grep
以状态 1 退出,这是提供给的表达式grep
不匹配的情况。
因此,要防止将退出状态 1(或更高)提供回grep
被调用的终端或脚本,请使用:
grep "EXPR" FILE.txt || echo "No match found"
可能的结果: