Algumas preliminares:
-
Você provavelmente deve estar se afastando de invocar scripts init do SysV diretamente; você tem pelo menos um e provavelmente dois passos atrás da curva (o init do SysV foi substituído por
upstart
e depois porsystemd
). Por exemplo:systemctl restart rsyslog.service
-
Seja qual for a interface do init usada, é provável que você possa usar o comando
EXIT_STATUS
diretamente, em vez de capturar sua saída e testar a igualdade da cadeia de caracteres. Por exemplo:systemctl restart rsyslog.service if [ $? -ne 0 ]; then ... fi
(em qualquer caso, como @choroba destacou nos comentários, a mensagem '[OK]' pode, na verdade, estar indo para um erro padrão em vez de uma saída padrão).
-
No Ubuntu,
/bin/sh
não ébash
: consulte DashAsBinSh . Entre outras coisas, isso significa que ele não suportará a sintaxe do teste estendido[[ . . . ]]
.
Tendo conseguido isso, bash
de fato suporta testes de igualdade de strings em strings de múltiplas linhas, por exemplo
$ str1='This is
a string'
$ str2='That is
a string'
$ str3='This is
a string'
$
$ [[ "$str1" != "$str1" ]] && echo "No match" || echo "Match"
Match
$ [[ "$str1" != "$str2" ]] && echo "No match" || echo "Match"
No match
$ [[ "$str1" != "$str3" ]] && echo "No match" || echo "Match"
Match