Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2007, 19h37   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 161
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 161
Points : 40
Points : 40
Par défaut Code retour commande (pbs à résoudre)

Bonsoir,

J'ai remarquer le pbs suivants

Code :
1
2
3
ls -z 2>&1
echo $?
2
Jusque là rien de bizarre.

Par contre

Code :
1
2
3
ls -z 2>&1| tee ls.log
echo $?
0
Très bien le tee réussi. Mais alors :

Code :
{ ls -z 2>&1 ; echo $? ; }| tee ls.log
Le echo m'affiche bien 2, mais comment je le met dans une variable ??

Code :
1
2
{ ls -z 2>&1 ; retour=$? ; }| tee ls.log
echo $retour
$retour est vide !!

Comment fait-on ?

Merci.

++
Fluxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2007, 10h00   #2
Membre actif
 
Inscription : juin 2003
Messages : 270
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 270
Points : 170
Points : 170
le probleme c'est l'utilisation du pipe: chaque commande (le tee et le ls dans ton cas) est executee dans un subshell donc pas possible de garder la valeur d'une variable.

Donc soit tu te passes du pipe, soit tu trouves un autre moyen de communiquer la valeur (ecriture dans un fichier par ex, mais il doit y avoir une solution plus legere).
__________________
www.callofduty5waw.fr
drinkmilk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2007, 10h26   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 161
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 161
Points : 40
Points : 40
Il me semblait que pour le sub-shell, c'était avec ()

Code :
1
2
{cmd1;cmd2;} Execute commands as a group in the current shell. 
(cmd1;cmd2) Execute commands as a group in a subshell.
Issue de "Bash Quick Reference" De Arnold Robbins.

Donc je suis bien dans le même shell; non ??

++
Fluxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2007, 11h00   #4
Membre actif
 
Inscription : juin 2003
Messages : 270
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 270
Points : 170
Points : 170
issue de la page man de bash:
Citation:
Each command in a pipeline is executed as a separate process (i.e., in a subshell)
l'operateur pipe semble avoir une plus grande priorite que {}, tes 2 commandes sont donc dans le meme "subshell". (mais je me base uniquement sur le comportement a l'execution de ton code pour dire ca)
__________________
www.callofduty5waw.fr
drinkmilk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h30.


 
 
 
 
Partenaires

Hébergement Web