GNU/Linux >> Tutoriels Linux >  >> Linux

La redirection de la sortie de la commande vers une variable dans bash échoue

Peut-être que la sortie va à stderr , pas stdout ? Essayez ceci :

OUTPUT=$(sudo apache2ctl configtest 2>&1)

Pour nginx, situation possible où configtest peut réussir 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 vérifier correctement les erreurs dans les scripts bash, utilisez :

if [[ $((sudo /sbin/service nginx configtest) 2>&1 | grep "failed\|warn" ) ]]; then
    echo "ERROR!!!"
else
    echo "OK!!!"
fi

Linux
  1. Stockage de la sortie de la commande dans la variable Shell ?

  2. Ai-je besoin de citer des substitutions de commandes lors de l'affectation de leur sortie à une variable ? ?

  3. Comment définir une variable égale à la sortie d'une commande dans Grub2 ?

  4. La commande Rm dans le script Bash ne fonctionne pas avec la variable ?

  5. Diviser la sortie de la commande par colonnes à l'aide de Bash ?

Variable d'exportation bash

Commande d'attente bash

Commande Bash printf

Bash Beginner Series #2 :Comprendre les variables dans les scripts shell Bash

Rediriger la sortie de la commande time sous unix vers une variable bash ?

Sortie détaillée de la commande Bash find