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