
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입니다. 그러나 -q, --quiet 또는 --silent 옵션을 사용하고 선택한 행을 찾지 않는 한 오류가 발생한 경우 종료 상태는 2입니다.
답변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