Como aninhar aspas em comandos bash

Como aninhar aspas em comandos bash

Quero testar o resultado deste comando:

dmesg | grep "Firmware patch 1563"

Portanto, tento escrever algo assim:

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

Mas não funciona. Como devo reescrever este comando?

Responder1

Você pode testar o resultado de um comando diretamente:

if dmesg | grep -q "Firmware patch 1563"

Se você precisar verificar se a saída de um tubo está vazia,usar $()para substituição de comandoe aninhe seucitaçõescomo você faria com um comando independente:

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

Responder2

Você pode usarsubstituição de comandodiretamente:

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

Ou uma maneira melhor, use comandos diretamente comoresposta de l0b0.

Responder3

O que você escreveu deve funcionar. Não porque você esqueceu uma citação. Deveria ser:

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

Observe o extra "depois 1563. Dito isto, pensoa outra respostaoferece melhores maneiras de alcançar o que você deseja fazer.

informação relacionada