如何保证grep至少返回一行
我想运行一个运行grep命令并输出结果的脚本。我希望grep返回一行,但希望处理没有匹配行的情况(例如,如果grep文件不存在)。有没有办法执行类似的操作如何保证grep至少返回一行,grep,default,Grep,Default,我想运行一个运行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 $
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
您所需要做的就是检查grep的返回代码
grep
如果一行匹配,则返回0;如果没有匹配的行,则返回1。如果发生错误,它将返回大于1的值
$ echo "hi" | grep hi
hi
$ echo $?
0
$ echo "hi" | grep hello
$ echo $?
1
在某些情况下(例如在bash脚本中设置了set-e
),您不希望grep
以状态1退出,这是提供给grep
的表达式不匹配的情况
因此,要防止将退出状态1(或更高)提供回调用grep
的终端或脚本,请使用:
grep "EXPR" FILE.txt || echo "No match found"
可能的结果:
set-e
),您不希望grep
以状态1退出,这是提供给grep
的表达式不匹配的情况
因此,要防止将退出状态1(或更高)提供回调用grep
的终端或脚本,请使用:
grep "EXPR" FILE.txt || echo "No match found"
可能的结果: