Ok Necesito encontrar el resultado que da un comando, notely "gbak: ERROR" y luego falla en él. No sé si lo estoy haciendo de la manera correcta, intenté hacer si fallara si el grep hiciera una salida a/dev/null pero tampoco pude hacerlo funcionar (probablemente solo una mala sintaxis). Estoy seguro de que este es simple, por favor avíseme.Script Bash - Instrucción If, cómo grep para luego falla en la salida especificada
La sentencia if tengo en este momento es:
if [ `sudo -u firebird $GBAK_COMMAND | grep "gbak: ERROR"` == *gbak: ERROR* ]; then
echo "$DATE Unsucessful $1.gdb Gbak. Incorrect user/password" >> /var/log/messages
echo "Failed"
exit 1
else
echo "pass"
fi
En lugar de backticks, que están en desuso, siempre debe usar $ (...) si lo necesita. Es mejor legible, es independiente de la fuente y puede anidarlo fácilmente 'a = $ (b $ (c $ (d)) $ (e))' –
Relacionado: [Grep output of command y úselo en la instrucción "if" , bash] (http://stackoverflow.com/q/19838118/320399) y [grep en la declaración IF] (http://stackoverflow.com/q/3943854/320399) – blong
También relacionado: [¿Cómo uso un archivo de comparación grep dentro de una instrucción bash if/else?] (http://stackoverflow.com/q/2480584/320399) – blong