Ich brauche einen Einzeiler, der "Ja" oder "Nein" anzeigt, ob grep Ergebnisse findet.
Ich habe mit gespielt grep -c
, aber ohne Erfolg.
Wie wäre es mit:
uptime | grep user && echo 'yes' || echo 'no'
uptime | grep foo && echo 'yes' || echo 'no'
Dann können Sie es ruhig haben:
uptime | grep --quiet user && echo 'yes' || echo 'no'
uptime | grep --quiet foo && echo 'yes' || echo 'no'
Aus der grep-Handbuchseite:
STATUS BEENDEN
Normalerweise ist der Exit-Status 0, wenn ausgewählte Zeilen gefunden werden, andernfalls 1. Der Exit-Status ist jedoch 2, wenn ein Fehler aufgetreten ist, es sei denn, die Option -q oder --quiet oder --silent wird verwendet und eine ausgewählte Zeile wird gefunden.
Ich bin mir nicht sicher, was du mit "Einzeiler" meinst. Für mich ist dies ein "Einzeiler".
Fügen ; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
Sie einfach nach dem grep-Befehl hinzu
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
Fügen Sie grep das Flag -q hinzu, wenn Sie das grep-Ergebnis unterdrücken möchten
bash$ grep -q nameserver /etc/resolv.conf; if [ $? -eq 0 ]; then echo "Yes"; else echo "No"; fi
Yes
Diese Version liegt zwischen der Version von Weboide und der Version von Radius :
if grep --quiet foo bar; then echo "yes"; else echo "no"; fi
Es ist besser lesbar als das erstere und wird nicht unnötig $?
wie das letztere verwendet.