#1 Le 04/11/2016, à 11:03
- Inglebard
[Résolu][Bash] Code retour à la place de stdout
Salut,
J'aimerais mettre un jour un de mes scripts.
Cependant, je n'ai pas besoin de voir la sortie standard mais juste le code de retour de la commande.
Actuellement voici un exemple :
rsync ....
RETOUR1=$?
L'objectif serait d'avoir directement le retour dans la variable :
RETOUR1=$(rsync ....) // Ne fonctionne pas car retourne le résultat stdout dans RETOUR1
Auriez-vous une solution ?
Dernière modification par Inglebard (Le 08/11/2016, à 10:17)
Hors ligne
#2 Le 04/11/2016, à 11:51
- Shanx
Re : [Résolu][Bash] Code retour à la place de stdout
Salut,
Je pense que la méthode que tu utilises actuellement est la meilleur (en tout cas une rapide recherche sur internet la cite comme la méthode de référence).
Pourquoi veux-tu la changer ?
Si c'est juste pour ne plus afficher stdout (et stderr), tu peux faire ça :
rsync foo bar > /dev/null 2>&1
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#3 Le 04/11/2016, à 12:01
- pingouinux
Re : [Résolu][Bash] Code retour à la place de stdout
Bonjour,
Ça dépend de ce que tu veux faire de ta variable RETOUR1. Si c'est pour n'enchaîner une seconde commande que si la première s'est bien passée (code de retour = 0), tu peux faire ceci
commande_1 && commande_2
Hors ligne
#4 Le 04/11/2016, à 13:06
- Inglebard
Re : [Résolu][Bash] Code retour à la place de stdout
@Shanx
Ben c'est qu'il y a pas mal de lignes et rajouter cette instruction augmente ce nombre.
@pingouinux
En fait, je garde la valeur pour la traiter plus tard ou la mettre dans un if. Dans mon cas, ça ne me convient pas.
J'attends un peu voir si quelqu'un d'autre à une solution, sinon je clôture la discussion.
Hors ligne
#5 Le 04/11/2016, à 13:18
- pingouinux
Re : [Résolu][Bash] Code retour à la place de stdout
Ben c'est qu'il y a pas mal de lignes et rajouter cette instruction augmente ce nombre.
Tu peux éventuellement faire un fonction qui lance les commandes et traite les codes de retour. Il faudrait que tu montres un exemple avec quelques lignes.
Hors ligne
#6 Le 04/11/2016, à 13:27
- credenhill
Re : [Résolu][Bash] Code retour à la place de stdout
hello
RETOUR1=$(rsync .... > log 2>&1; echo $?)
Hors ligne
#7 Le 04/11/2016, à 15:51
- Shanx
Re : [Résolu][Bash] Code retour à la place de stdout
@Shanx
Ben c'est qu'il y a pas mal de lignes et rajouter cette instruction augmente ce nombre.
Mieux vaut plus de lignes et plus de lisibilité que l'inverse.
Plus facile à débuguer, à maintenir et à (re-)découvrir.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne