Récupérer le retour d'une commande et le mettre dans une variable

Récupérer le retour d'une commande et le mettre dans une variable - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 01-05-2005 à 16:35:42    

Bonjour à tous.  :hello:  
Ca fait un moment que je cherche à récupérer la valeur que retourne une fonction dans un script et la placer dans une variable mais je n'y arrive pas!  :pt1cable:  Si quelqu'un peut m'aider. Je suis sur que c'est tout simple en fait.
Par exemple: je fais :  
read x
find -type d -name $x
qui va me chercher le chemin d'un répertoire, et là je voudrai mettre ce chemin dans une variable! Voilà merci à tous :bounce:  

Reply

Marsh Posté le 01-05-2005 à 16:35:42   

Reply

Marsh Posté le 01-05-2005 à 16:37:53    

echo $?
 :jap:

Reply

Marsh Posté le 01-05-2005 à 16:44:18    

mici mais je le mets où ce echo $? avec un | ou avec un =?

Reply

Marsh Posté le 01-05-2005 à 17:02:55    

La valeur de retour (0=succès etc) et l'output de la commande ne sont pas la même chose.
 
$? contient la valeur de retour de la dernière commande executée.
 
Si tu veux l'output:

ta_variable=$(ta_commande)

ou

ta_variable=`ta_commande`

(mais tu ne peux pas imbriquer les appels à plusieurs commandes avec cette seconde solution).

Reply

Marsh Posté le 01-05-2005 à 17:24:02    

Mici pillow
Pour voir si ça marchait, j'ai tapé ça:
read x
y=$(find -type d -name $x)
echo $y
 
Mais..... ça marche pas, ça affiche ben... rien! Comme tu le dis pillow je veux l'output de la commande et non la valeur de retour.  
Dans mon exemple je veux réutiliser le chemin trouvé par le find avec un cd donc la suite de mon code sera:
cd $y
Peut-être qu'il y a moyen sans passer par une variable, non?

Reply

Marsh Posté le 01-05-2005 à 17:50:14    

triso1007 a écrit :

Mici pillow
Pour voir si ça marchait, j'ai tapé ça:
read x
y=$(find -type d -name $x)
echo $y
 
Mais..... ça marche pas, ça affiche ben... rien!

Bah ça veut dire que ton find ne trouve rien [:spamafote]  
 
Tu utilises un '*', un '?' ou des espaces dans ton read?  
Il faut rajouter des guillemets autour de $x.
 

Citation :

Dans mon exemple je veux réutiliser le chemin trouvé par le find avec un cd donc la suite de mon code sera:
cd $y

Il faut tester que y n'est pas vide (ou que le cd marche), il faut des guillemets, et il faut que tu gères le cas où find donne plusieurs résultats.
 

Citation :

Peut-être qu'il y a moyen sans passer par une variable, non?

Tu pourrais faire cd "$(find blabla)", mais tu ne pourrais pas vérifier le résultat de find et ça, c'est une très mauvaise idée ;)  
 

Reply

Marsh Posté le 01-05-2005 à 17:59:45    

ben ds mon read j'ai tapé HOME et si je mets le find tout seul ça marche, il affiche le chemin! Par contre je suis sous cygwin, ça peut jouer?

Reply

Marsh Posté le 01-05-2005 à 18:10:21    

ah j'ai compris en fait c'est simple c'est que sous linux les majuscules ça change tout! En fait ça marche nickel merci pillow

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed