Você pode usar substituição de comandos diretamente:
if $(dmesg | grep -q "Firmware patch 1563"); then
# Do something here
fi
Ou uma maneira melhor, use comandos diretamente como a resposta do l0b0 .
Eu quero testar o resultado deste comando:
dmesg | grep "Firmware patch 1563"
Portanto, tento escrever algo assim:
if [ "'dmesg | grep "Firmware patch 1563'" == "" ]
Mas isso não funciona. Como devo reescrever este comando?
Você pode usar substituição de comandos diretamente:
if $(dmesg | grep -q "Firmware patch 1563"); then
# Do something here
fi
Ou uma maneira melhor, use comandos diretamente como a resposta do l0b0 .
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 canal está vazia, use $()
para substituição de comando e aninhe suas citações , como você faria com um comando autônomo:
if [ -z "$(my_command | other_command "some argument")" ]
O que você escreveu deve funcionar. Não porque você esqueceu uma citação. Deve ser:
if [ "'dmesg | grep "Firmware patch 1563"'" == "" ]
Observe o "
extra após 1563
. Com isso dito, acho que a outra resposta oferece melhores maneiras de alcançar o que você deseja fazer.