J'essaie de rediriger la sortie de la commande vers une variable:
OUTPUT=$(Sudo Apache2ctl configtest)
et ensuite le lire:
echo $OUTPUT
Lors de son exécution, la sortie est la suivante:
19:19:12 user@user ~ OUTPUT=$(Sudo Apache2ctl configtest)
Syntax OK
Syntax OK
Mais la variable reste vide. J'ai essayé la même chose pour d'autres commandes et tout fonctionne bien.
OUTPUT=$(ls -l)
Ceci écrit la liste de fichiers dans la variable OUTPUT
afin qu’elle puisse être lue plus tard. Que dois-je faire pour que cela fonctionne?
peut-être que la sortie va à stderr
, pas stdout
?
essayez ceci: OUTPUT=$(Sudo Apache2ctl configtest 2>&1)
Pour nginx, il peut arriver que configtest réussisse avec une erreur dans les fichiers de configuration. Exemple:
nginx: [warn] conflicting server name "test.com" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
pour des erreurs de vérification correctes dans les scripts bash, il faut utiliser:
if [[ $((Sudo /sbin/service nginx configtest) 2>&1 | grep "failed\|warn" ) ]]; then
echo "ERROR!!!"
else
echo "OK!!!"
fi