Seus resultados não correspondem ao meu
echo 'some test here' > file.txt
grep test file.txt
echo $? # returns 0
echo 'something else here' > file.txt
grep test file.txt
echo $? # returns 1
Além disso, quando executo seu próprio exemplo de código completo, obtenho o "sucesso" ou "falha" de acordo com a existência ou não da palavra-chave no arquivo. (Eu adicionei o espaço faltante entre o 0
e ]
porque senão você estaria recebendo o erro, -bash: [: missing ']'
e você não reportou isso.)
grep test file.txt
if [ "$?" -eq 0 ]
then
echo success
else
echo fail
fi
No entanto, como sugestão de estilo, eu testaria o comando grep
diretamente, como este
if grep test file.txt
then
echo success
else
echo fail
fi
Parece-me que você pode querer usar o valor de retorno do grep
após seu bloco if
... fi
. Nesse caso, basta salvar o valor e continuar em:
grep test file.txt
ss=$?
if [ 0 -eq $ss ]
then
echo success
else
echo fail
fi
# Here $ss still contains the return value from grep