Ok I need to find the output that a command gives, notely \"gbak: ERROR\" and then fail on it. I don\'t know if I\'m going about it the right way, I tried to make if fail if the
You don't need the 'test' operator square brackets; just test the exit status of grep
:
if sudo -u firebird $GBAK_COMMAND | grep -q "gbak: ERROR"
then
echo "$DATE Unsuccessful $1.gdb Gbak. Incorrect user/password" >> /var/log/messages
echo "Failed"
exit 1
else
echo "pass"
fi
The -q
option to grep
suppresses all output (POSIX and GNU variants) so you just get the status, which the if
tests. If grep
finds the pattern, it returns success, which means that the firebird
command failed. The only residual issue is 'does firebird
write its error to standard output or to standard error?' If you need to redirect the standard error, write:
if sudo -u firebird $GBAK_COMMAND 2>&1 | grep -q "gbak: ERROR"
then
echo "$DATE Unsuccessful $1.gdb Gbak. Incorrect user/password" >> /var/log/messages
echo "Failed"
exit 1
else
echo "pass"
fi