Um comando não retorna seu status de saída ( $?
) na saída padrão. Uma substituição de comando ( $(...)
) captura a saída padrão.
Em vez disso, basta fazer
#!/bin/sh
if ! /usr/bin/python /etc/scripts/backup.py; then
echo 'PROBLEM'
else
echo 'OK'
fi
Isso selecionaria a primeira ramificação e imprimiria PROBLEM
se o script python saísse com um status de saída diferente de zero.
Você pode ler a instrução if
como "Se o script não foi bem-sucedido".
Se você quiser se livrar do !
:
#!/bin/sh
if /usr/bin/python /etc/scripts/backup.py; then
echo 'OK'
else
echo 'PROBLEM'
fi
Você pode ler a instrução if
como "Se o script foi bem-sucedido".
O erro que você recebe vem do fato de que o script não produz nada, o que significa que a substituição do comando estará vazia. Como não é citada, o comando que o shell tentará executar será parecido com
if [ -gt 0 ]
Este é um erro de sintaxe.
Ao citar a substituição do comando, você essencialmente tenta executar
if [ "" -gt 0 ]
e o shell não é capaz de comparar a string vazia como um inteiro.