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.