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.