[BASH] Question sur valeur de retour

Question sur valeur de retour [BASH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 25-08-2005 à 15:58:02    

Est ce possible de récupérer directement la valeur de retour d'une commande ?
 
plus précisement, peut on faire en une seule ligne ce que font les 2 lignes suivantes :
 

Citation :


find /toto/ -type f  
echo $?


 
 je voudrais avoir tout de suite en sortie standard la valeur de retour du  `find  /toto/ -type f `  sans passer par le echo $?
 
possible ou pas possible ?
 
Merci :hello:
 
 
 
 
 

Reply

Marsh Posté le 25-08-2005 à 15:58:02   

Reply

Marsh Posté le 25-08-2005 à 16:34:37    

En une seule ligne: find /toto/ -type f; echo $? :whistle:

Reply

Marsh Posté le 25-08-2005 à 16:41:22    

:fou:  :pt1cable:

Reply

Marsh Posté le 25-08-2005 à 16:58:25    

find /toto/ -type f && tacommande.
 
Si la valeur de retour n'est pas 0 tacommande ne sera pas exécutée :)

Reply

Marsh Posté le 25-08-2005 à 17:14:09    

il existe aussi la quote renversée (?!?) : `commande`
 
Par exemple :

Code :
  1. ls /lib/modules/`uname -r`/kernel

Reply

Marsh Posté le 25-08-2005 à 17:14:50    

:eek:
 
C'est quoi cette chose :eek:

Reply

Marsh Posté le 25-08-2005 à 17:17:35    

Bon , je vais mettre mon exemple concret :  
résumé du script:  
 
- demande de l'âge
- utilisation de la fonction test_vide() qui retourne 1 sur la variable n'est pas nulle, sinon retourne 0.
- du momment que la variable $age est vide, on repose la question
 
 
 

Citation :


 
#!/bin/bash
 
echo "entre l'age du capitaine"
read age
test_vide $age
 
while [ $? -eq 0 ]
do
echo "essaye encore"
read age
test_vide $age
done
 
echo "le capintaine a $age ans"
 


 
et sur cette idée, je voudrais faire la boucle while sans retester $age à chaque fois.
c'est "while [ $? -eq 0 ]" qui me dérange ...  
 
 
 
 
(bon l'exemple n'a pas de sens .. mais c'est juste un exemple :D)


Message édité par korny le 25-08-2005 à 17:20:29
Reply

Marsh Posté le 25-08-2005 à 17:19:36    

le gnome a écrit :

il existe aussi la quote renversée (?!?) : `commande`
 
Par exemple :

Code :
  1. ls /lib/modules/`uname -r`/kernel



 
 
merci je connais les quotes inversées ;) et on peut meme ecrire  :
ls /lib/modules/$(uname -r)/kernel
mais c'est pas ca que je veux :D


Message édité par korny le 25-08-2005 à 17:23:01
Reply

Marsh Posté le 25-08-2005 à 17:53:08    

korny a écrit :


#!/bin/bash
 
echo "entre l'age du capitaine"
read age
test_vide $age
 
while [ $? -eq 0 ]
do
echo "essaye encore"
read age
test_vide $age
done
 
echo "le capintaine a $age ans"
 
[/quote]

Tu veux faire ça ?

while :
do
echo "essaye encore"
read age          
test_vide $age || break
done

A priori ça ne fait pas une grande différence [:petrus75]  
 
Sinon le "mieux" ça doit être :

while [ -z "$age" ]
do
echo "essaye encore"
read age
done


(m'enfin dans l'exemple c'est franchement ininteressant comme "optimisation", 99.999999999999999999999999% du temps est passé à attendre que l'utilisateur tape sur son clavier, hein [:petrus75] )


Message édité par Pillow le 25-08-2005 à 17:57:53
Reply

Marsh Posté le 26-08-2005 à 08:30:52    

Citation :

test_vide $age || break


ah ben je connaissais pas cette utilisation du || :jap:
 
Bon oui, je confirme que la founction ne sert à rien. Je découvre les fonctions, et je voulais en tester une qui teste juste si la variable n'est pas vide , et oui, dedans la fonctino y'a juste un -z :D
 
le coup du while : c'est peut etre ce qu'il y'a de plus proche de ce que je veux
 
sinon
 


read age
while [ xxxx -eq 0 ]
do
echo "essaye encore" && read age
done


 
et XXX : execution de "test_vide $age" et test de la valeur de retour avec -eq 0
 
enfin bon, si c'est pas possible, j'ai maintenant d'autres possibilités ;)


Message édité par korny le 26-08-2005 à 08:32:10
Reply

Sujets relatifs:

Leave a Replay

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