我想運行一個運行grep命令並輸出結果的腳本。我希望grep返回一行,但要處理沒有匹配行的情況(例如,如果grepped文件不存在)。有沒有執行類似如何保證grep返回至少一行
line = grep ...
if line is empty
print "\n"
else
print line
我想運行一個運行grep命令並輸出結果的腳本。我希望grep返回一行,但要處理沒有匹配行的情況(例如,如果grepped文件不存在)。有沒有執行類似如何保證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"
可能結果: