Como aninhar aspas nos comandos bash

3

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?

    
por michelemarcon 07.10.2014 / 11:03

3 respostas

4

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 .

    
por 07.10.2014 / 11:05
8

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")" ]
    
por 07.10.2014 / 11:08
1

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.     

por 08.10.2014 / 17:57