Echo basierend auf grep Ergebnis


7

Ich brauche einen Einzeiler, der "Ja" oder "Nein" anzeigt, ob grep Ergebnisse findet.

Ich habe mit gespielt grep -c, aber ohne Erfolg.

Antworten:


11

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.


2

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"; fiSie 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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.