Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/11/2016, à 12: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, à 11:17)

Hors ligne

#2 Le 04/11/2016, à 12: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, à 13: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, à 14: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, à 14: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, à 14: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, à 16:51

Shanx

Re : [Résolu][Bash] Code retour à la place de stdout

Inglebard a écrit :

@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. wink
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