Ich möchte das Ergebnis dieses Befehls testen:
dmesg | grep "Firmware patch 1563"
Deshalb versuche ich, so etwas zu schreiben:
if [ "`dmesg | grep "Firmware patch 1563`" == "" ]
Aber es funktioniert nicht. Wie soll ich diesen Befehl umschreiben?
Antwort1
Sie können das Ergebnis eines Befehls direkt testen:
if dmesg | grep -q "Firmware patch 1563"
Wenn Sie prüfen müssen, ob die Ausgabe einer Pipe leer ist,$()
zur Befehlsersetzung verwendenund verschachteln Sie IhreZitatewie bei einem eigenständigen Befehl:
if [ -z "$(my_command | other_command "some argument")" ]
Antwort2
Sie könnenBefehlsersetzungdirekt:
if $(dmesg | grep -q "Firmware patch 1563"); then
# Do something here
fi
Oder besser noch: Verwenden Sie Befehle direkt wieAntwort von l0b0.
Antwort3
Was du geschrieben hast, sollte funktionieren. Das tut es nicht, weil du ein Zitat vergessen hast. Es sollte heißen:
if [ "`dmesg | grep "Firmware patch 1563"`" == "" ]
Beachten Sie das Extra "
nach 1563
. Nachdem das gesagt ist, denke ich,die andere Antwortbietet Ihnen bessere Möglichkeiten, Ihre Ziele zu erreichen.