/ / Les scripts Bash affectent TOUTES les sorties d'une commande à une variable - bash

Script Bash assigne TOUTES les sorties de la commande à la variable - bash

"J'essaie d'obtenir des réponses réussies et non réussies d'un ping dans un script bash, mais je n'y suis pas parvenu jusqu'à présent.

Mon code ressemble à ceci ...

ping_results=$(ping -c 4 -q google.com)

Cela fonctionne lorsque le ping est réussi, mais si je n’ai pas de connexion Internet et j’obtiens le résultat

ping: unknown host google.com

Il est imprimé sur la console et mon script semble quitter.

Je veux que le résultat ou l'erreur du ping soit stocké dans la variable ping_results.

Toute aide serait appréciée.

Réponses:

6 pour la réponse № 1

Ok, la réponse simple à votre question est de rediriger stderr vers stdout. comme ce que Fredik Phil a mentionné dans les commentaires.

au lieu de:

ping_results=$(ping -c 4 -q google.com);

utilisation:

 ping_results=$(ping -c 4 -q google.com 2>&1);

ou quelque chose de similaire ...

Cependant, selon ce que vous faites, il se peut queIl vaut mieux tester si le code de sortie de la commande ping est 1 (indiquant que le ping se termine par une erreur) ou à 0 (indiquant que le ping réussit). le code de sortie est stocké dans la variable "$?".