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 07/03/2007, 21h07   #1
Membre Expert
 
damien
Inscription : mars 2005
Messages : 1 680
Détails du profil
Informations personnelles :
Nom : damien
Âge : 27

Informations forums :
Inscription : mars 2005
Messages : 1 680
Points : 1 849
Points : 1 849
Par défaut récupérer le retour d'une commande

Bonsoir,
je suis entrain de me faire un script shell qui copie des fichiers sur une clée usb jusqu'à ce que celle-ci soit pleine.
la commande cp renvoi un message du style "pas assez de place" lorsque la clée est vide, donc moi ce que je voudrai faire c'est récupéré le message que renvois la commande cp et faire un test dessus
ou même mieu faire une boucle tantque cp ne renvoie rien...
mais je trouve pas comment faire, je n'arrive pas récupéré ce maudit message

merci de votre aide
__________________
dam's
dams78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 08h53   #2
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Bonjour,
Pour récupérer la sortie standard d'une commande il faut utiliser l'opérateur $(...).
Par exemple :
Citation:
narma@linimi:/tmp$ touch toto.txt
narma@linimi:/tmp$ msg=$(cp toto.txt titi/ 2>&1 1>/dev/null)
narma@linimi:/tmp$ echo $msg
cp: la cible `titi/' n'est pas un répertoire: Aucun fichier ou répertoire de ce type
"2>&1 1>/dev/null" sont des redirections des flux erreur et standard. Ainsi, je ne récupère que la sortie erreur car la sortie standard est redirgée vers /dev/null.
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 10h26   #3
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
sinon, au lieu de récupérer un message qui sera plus complexe à traiter surtout si la localisation change, tu peux récupérer l'état retourné par n'importe quelle application avec la variable $? du shell
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 14h16   #4
Membre Expert
 
damien
Inscription : mars 2005
Messages : 1 680
Détails du profil
Informations personnelles :
Nom : damien
Âge : 27

Informations forums :
Inscription : mars 2005
Messages : 1 680
Points : 1 849
Points : 1 849
merci à vous deux de vos réponses, je testes ça ce soir!
__________________
dam's
dams78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 23h34   #5
Membre confirmé
 
Inscription : décembre 2002
Messages : 452
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 452
Points : 266
Points : 266
Citation:
Envoyé par narmataru
Bonjour,
Pour récupérer la sortie standard d'une commande il faut utiliser l'opérateur $(...).
Par exemple :

"2>&1 1>/dev/null" sont des redirections des flux erreur et standard. Ainsi, je ne récupère que la sortie erreur car la sortie standard est redirgée vers /dev/null.
ahh tiens, j'ai une petite question
que signifie : 2>&1 ?
tu redirige le flux d'erreur stderr (si je me souviens bien )vers &1 qu'est ce que ca veut dire ?
weed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 00h00   #6
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
un peu de lecture ??
http://marcg.developpez.com/ksh/#L3
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 22h52   #7
Membre confirmé
 
Inscription : décembre 2002
Messages : 452
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 452
Points : 266
Points : 266
vraiment sympa comme doc, je vais le bookmarker parce que ca peut parfois servir a retrouver la syntaxe bash ...

donc dans ton exemple si j'ai bien compris, tu rediriges tous les flux d'erreur (2), vers ton descripteur de sortie normal (1) qui est lui meme rediriger vers un fichier ...

un grand merci, j'ai toujours appris betement 2>&1 mais je ne savais pas exacetement ce que cela voulait dire ... J'ai appris quelques choses.
weed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 08h28   #8
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Citation:
Envoyé par weed
un grand merci, j'ai toujours appris betement 2>&1 mais je ne savais pas exacetement ce que cela voulait dire ... J'ai appris quelques choses.
ben apparemment tu as mal appris le descripteur '2' représente la sortie d'erreur et non 'toutes les sorties'

voilou
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h52.


 
 
 
 
Partenaires

Hébergement Web