Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 06/06/2013, à 16:28

GP974

[resolu]récupérer le code retour de la 1ere partie d'une commande

bonjour besoin d'un petit peu d'aide sur une partie d'un script ou je seche

voila j'utilise la commande tee pour pouvoir rediriger la sortie standard et erreur sur la sortie console et dans un fichier de log bon jusque la ca marche bien
exemple

mkdir "$HOME/Vidéos/test | tee -a log

avec ca si'il y a un probleme la sortie est bien rediriger comme il faut
le problème est que je dois faire un traitement selon le resultat de la commande mais quelque soit le resultat de la premiere commande la script continue car $? renvois 0 a cause de tee

il y a t'il un moyen de récupérer le code de retour du mkdir sans celui de tee ?
ou y'a t'il un autre moyen d’écrire sur la sortie console et dans un fichier de log en même temps sans utiliser tee et sans multiplier les lignes de log ?


merci

Dernière modification par GP974 (Le 06/06/2013, à 17:29)


Ubunteros depuis 10.04 Restez libre avec Linux :)
Fixe : i7 i930@2.8ghz | 8go(1866Mhz) |Gtx 570@nvidia-340 | Samsung 840evo(120Go) | Ubuntu 12.04.4 & 14.04
Portable(asus N75SF) : i5 2410@2.3ghz | 8go(1333Mhz)  | IntelHD3000/GT555m@nvidia-340 | Vertex2(180go)| Arch & 12.04.4 & 14.10(dev)
Développeur de nvidiux

Hors ligne

#2 Le 06/06/2013, à 16:40

k-bag

Re : [resolu]récupérer le code retour de la 1ere partie d'une commande

Hello smile

Pourquoi ne pas rediriger la sortie standard sans passer par tee?

mkdir "$HOME/Vidéos/test" >> log

Et aussi mkdir a un mode verbeux:

mkdir -v

Dernière modification par k-bag (Le 06/06/2013, à 16:41)


Xubuntu 12 (Taste of perfection) -- Win7 (1/2)
Blog >> Couscous, Open-source et système binaire
" L'intelligence, c'est pas sorcier, il suffit de penser à une connerie et de dire l'inverse. "

Hors ligne

#3 Le 06/06/2013, à 16:49

nesthib

Re : [resolu]récupérer le code retour de la 1ere partie d'une commande

La solution que tu cherches est la suivante :

{
echo "début du script"
mkdir "…"
echo "mkdir a retourné $?"
} 2>&1 | tee -a log

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4

Hors ligne

#4 Le 06/06/2013, à 16:54

obibann

Re : [resolu]récupérer le code retour de la 1ere partie d'une commande

Petit complément par rapport à l'astuce de k-bag :

# Affiche le log en continue arrière plan
tailf log &
TPID=$!

# Redirige les messages standards et les erreurs dans le log
mkdir "$HOME/Vidéos/test" >> log 2>&1

# Autres traitements
[...]

# Arrêt de l'affiche du log
kill $TPID

Dernière modification par obibann (Le 06/06/2013, à 16:55)


Ubuntu 14.04 / Ubuntu 12.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne

#5 Le 06/06/2013, à 17:16

GP974

Re : [resolu]récupérer le code retour de la 1ere partie d'une commande

@k-bag
si je fais ca il n'y a plus rien sur la sortie console

@nesthib ok merci je teste

@obibann si je comprend bien la je redirige seulement sur le fichier et tails se charge de le reaficher dans la sortie console c'est ça ?


Ubunteros depuis 10.04 Restez libre avec Linux :)
Fixe : i7 i930@2.8ghz | 8go(1866Mhz) |Gtx 570@nvidia-340 | Samsung 840evo(120Go) | Ubuntu 12.04.4 & 14.04
Portable(asus N75SF) : i5 2410@2.3ghz | 8go(1333Mhz)  | IntelHD3000/GT555m@nvidia-340 | Vertex2(180go)| Arch & 12.04.4 & 14.10(dev)
Développeur de nvidiux

Hors ligne

#6 Le 06/06/2013, à 17:19

obibann

Re : [resolu]récupérer le code retour de la 1ere partie d'une commande

La solution de @nesthib est plus propre. Mais en effet, c'est ça, tu rediriges tes commandes dans ton log, et le tailf lancé en tâche de fond affiche "en live" les nouvelles lignes qui sont ajoutées.


Ubuntu 14.04 / Ubuntu 12.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne

#7 Le 06/06/2013, à 17:27

GP974

Re : [resolu]récupérer le code retour de la 1ere partie d'une commande

@obibann ok ca lance 2 commande en parallèle un peu bidouiller comme méthode ^^

@nesthib testé et approuvé ça marche merci smile

resolu


Ubunteros depuis 10.04 Restez libre avec Linux :)
Fixe : i7 i930@2.8ghz | 8go(1866Mhz) |Gtx 570@nvidia-340 | Samsung 840evo(120Go) | Ubuntu 12.04.4 & 14.04
Portable(asus N75SF) : i5 2410@2.3ghz | 8go(1333Mhz)  | IntelHD3000/GT555m@nvidia-340 | Vertex2(180go)| Arch & 12.04.4 & 14.10(dev)
Développeur de nvidiux

Hors ligne

#8 Le 08/06/2013, à 08:23

pode

Re : [resolu]récupérer le code retour de la 1ere partie d'une commande

Tu peux aussi rajouter au début du script:

set -o pipefail

Hors ligne

Haut de page ↑