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 06/06/2013, à 15: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, à 16:29)


Ubunteros depuis 10.04 Restez libre avec Linux :)
Fixe : i7 i930@3.2ghz | DDR3 12go | Amd Rx580 | SSD - 120Go S2 | 14.04.05 & Arch
Fixe2 : I5 6500U@2.8ghz | DDR4 8GO | SSD 120 M2 | Arch
Développeur de nvidiux

Hors ligne

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

MisterOccan

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

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ᴉsdn

Hors ligne

#4 Le 06/06/2013, à 15: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, à 15:55)


Ubuntu 16.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, à 16: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@3.2ghz | DDR3 12go | Amd Rx580 | SSD - 120Go S2 | 14.04.05 & Arch
Fixe2 : I5 6500U@2.8ghz | DDR4 8GO | SSD 120 M2 | Arch
Développeur de nvidiux

Hors ligne

#6 Le 06/06/2013, à 16: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 16.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, à 16: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@3.2ghz | DDR3 12go | Amd Rx580 | SSD - 120Go S2 | 14.04.05 & Arch
Fixe2 : I5 6500U@2.8ghz | DDR4 8GO | SSD 120 M2 | Arch
Développeur de nvidiux

Hors ligne

#8 Le 08/06/2013, à 07: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