So verschachteln Sie Anführungszeichen in Bash-Befehlen

So verschachteln Sie Anführungszeichen in Bash-Befehlen

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.

verwandte Informationen