
我需要一個單行程式碼來顯示“是”或“否”,無論 grep 找到任何結果。
我玩過grep -c
,但沒有成功。
答案1
怎麼樣:
uptime | grep user && echo 'yes' || echo 'no'
uptime | grep foo && echo 'yes' || echo 'no'
然後你就可以安靜下來了:
uptime | grep --quiet user && echo 'yes' || echo 'no'
uptime | grep --quiet foo && echo 'yes' || echo 'no'
從 grep 手冊頁:
退出狀態
通常,如果找到選定的行,退出狀態為 0,否則為 1。但如果發生錯誤,退出狀態為 2,除非使用 -q 或 --quiet 或 --silent 選項並且找到選定的行。
答案2
我不知道你所說的“單行”是什麼意思,對我來說這是“單行”
; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
只需在 grep 命令後添加即可
bash$ grep ABCDEF /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
No
bash$ grep nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
nameserver 212.27.54.252
Yes
如果您想抑制 grep 結果,請向 grep 添加 -q 標誌
bash$ grep -q nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
Yes