Bash - problema com declaração condicional do grep

0

Por que esse código funciona corretamente, enquanto a outra versão da mesma condição não funciona?

if grep -q string file; then
    echo found
else
    echo not found
fi

Isso não funciona:

if [ ! 'grep -q string file' ]; then
    echo not found
else
    echo found
fi
    
por asd 20.10.2017 / 10:56

1 resposta

5

'grep -q string file' , em backticks (ou dentro de $(...) , que é preferível ), será substituído pela saída de grep . Essa será uma string vazia, pois -q é usado.

Para negar um teste, basta inserir ! antes dele:

if ! grep -q pattern file; then
    echo not found
else
    echo found
fi

Se você realmente deseja pesquisar uma string (em vez de uma expressão regular), use também -F with grep .

    
por 20.10.2017 / 11:19

Tags