#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)
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
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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 ?
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
resolu
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