Cómo anidar comillas en comandos bash

Cómo anidar comillas en comandos bash

Quiero probar el resultado de este comando:

dmesg | grep "Firmware patch 1563"

Por eso, intento escribir algo como esto:

if [ "`dmesg | grep "Firmware patch 1563`" == "" ]

Pero no funciona. ¿Cómo debo reescribir este comando?

Respuesta1

Puedes probar el resultado de un comando directamente:

if dmesg | grep -q "Firmware patch 1563"

Si necesita comprobar si la salida de una tubería está vacía,utilizar $()para sustitución de comandosy anida tucitascomo lo haría con un comando independiente:

if [ -z "$(my_command | other_command "some argument")" ]

Respuesta2

Puedes usarsustitución de comandodirectamente:

if $(dmesg | grep -q "Firmware patch 1563"); then
  # Do something here
fi

O una mejor manera, use comandos directamente comoLa respuesta de l0b0.

Respuesta3

Lo que escribiste debería funcionar. No es así porque hayas olvidado una cita. Debería ser:

if [ "`dmesg | grep "Firmware patch 1563"`" == "" ]

Tenga en cuenta el extra "después 1563. Dicho esto, creola otra respuestale ofrece mejores formas de lograr lo que desea hacer.

información relacionada