Contenu | Rechercher | Menus

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

GP974
Membre

[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, à 16:29)


Ubunteros depuis 10.04 Restez libre avec Linux :)
Fixe : i7 i930@2.8ghz | ddr3 12go | Gtx 570@nvidia-358 | 840evo(120Go) | 14.04.03 & Arch
Portable (asus N75SF) : i5 2410@2.3ghz | ddr3 8go | IntelHD3000/GT555m | Vertex2(180go) | Arch & 12.04.5
Developpeur de nvidiux

Hors ligne

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

MisterOccan
Membre

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, à 15:41)


Xubuntu 14 (Taste of perfection)
" L'intelligence, c'est pas sorcier, il suffit de penser à une connerie et de dire l'inverse. "

Hors ligne

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

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

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

Hors ligne

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

obibann
Membre

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, à 15:55)


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

Hors ligne

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

GP974
Membre

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 | ddr3 12go | Gtx 570@nvidia-358 | 840evo(120Go) | 14.04.03 & Arch
Portable (asus N75SF) : i5 2410@2.3ghz | ddr3 8go | IntelHD3000/GT555m | Vertex2(180go) | Arch & 12.04.5
Developpeur de nvidiux

Hors ligne

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

obibann
Membre

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 15.10
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne

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

GP974
Membre

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 | ddr3 12go | Gtx 570@nvidia-358 | 840evo(120Go) | 14.04.03 & Arch
Portable (asus N75SF) : i5 2410@2.3ghz | ddr3 8go | IntelHD3000/GT555m | Vertex2(180go) | Arch & 12.04.5
Developpeur de nvidiux

Hors ligne

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

pode
Membre

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