Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1497 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  [KSH] Enterrer le résultat d'un commande

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[KSH] Enterrer le résultat d'un commande

n°756732
heaven35
Posté le 28-11-2005 à 12:18:20  profilanswer
 

Bonjour,
 
J'écris un script en KSH qui me lance un certains nombre de commandes.
Par exemple, je fait un recherche pour savoir si un répertoire a été modifié depuis 24h.
Par contre je ne veux pas que le résultat apparaisse à l'écran. Je veux juste utiliser le code de retour pour afficher un echo.
 
Voici mon script :  
 
#
find /home -ctime 1 &> /dev/null
if [ $? -eq 0 ]
then
echo "le repertoire a été modifié"
else
echo "rien n'a été modifié"
fi
exit 0
#

 
Le résultat quand je le lance est :
 
/home
le repertoire a été modifié
 
Pourtant je ne veux pas que /home apparaisse dans mon résultat.
 
Quelqu'un à une idée??
 
Merci
 

mood
Publicité
Posté le 28-11-2005 à 12:18:20  profilanswer
 

n°756735
asmodaiii
Posté le 28-11-2005 à 12:34:14  profilanswer
 

Je n'utilise pas ksh mais en tout cas ton code marche en bash:

Code :
  1. [asmodaiii@pink-chan] [12:32:35] ~ $ cat test.sh
  2. find /home -ctime 1 &> /dev/null
  3. if [ 0 -eq 0 ]
  4.   then
  5.     echo "le repertoire a été modifié"
  6.   else
  7.     echo "rien n'a été modifié"
  8. fi
  9. exit 0
  10. [asmodaiii@pink-chan] [12:33:03] ~ $ sh test.sh
  11. le repertoire a été modifié


Message édité par asmodaiii le 28-11-2005 à 12:34:53

---------------
v(^o^)v
n°756768
heaven35
Posté le 28-11-2005 à 14:20:32  profilanswer
 

Je l'ai modifié ( j'ai enlevé le & .... ) mais mon if ne fonctionne pas
Je dois me tromper sur la syntaxe pour vérifier le code de retour de ma commande...Il me dit à chaque fois que le répertoire a été modifié alors que ce n'est pas le cas
Quelqu'un à une idée??
 
#  
find /home -ctime 1 > /dev/null  
if [ $? -eq 0 ]  
then  
echo "le repertoire a été modifié"  
else  
echo "rien n'a été modifié"  
fi  
exit 0  
#  

n°756795
heaven35
Posté le 28-11-2005 à 15:39:39  profilanswer
 

Je crois que j'ai compris. En fait, comme ma commande find fonctionne, elle me retourne toujours 0. Donc mon echo "le repertoire a été modifié" s'affiche obligatoirement...
 
En fait il faudrait que mon if soit interprêté comme :  
SI LE RESULTAT DE LA COMMANDE FIND EST /HOME
alors
echo " le repertoire a été modifié"
then
echo " rien n'a été modifié"
 
Mais je n'y arrive pas.
Quelqu'un aurait-il la formidable syntaxe???
ça me dépannerait....

n°756797
jlighty
Posté le 28-11-2005 à 15:52:27  profilanswer
 

tu rediriges la sortie de la fonction find dans une variable puis tu compares cette variable à "\n".


Message édité par jlighty le 28-11-2005 à 15:53:12
n°756803
heaven35
Posté le 28-11-2005 à 16:02:49  profilanswer
 

Désolé, je débute et je ne comprends pas...

n°756825
jlighty
Posté le 28-11-2005 à 16:33:40  profilanswer
 

si tu mets l'affichage de find dans une variable :
ex:

Code :
  1. a=`find.....`


puis que tu compares $a à "\n" ( le retour chariot indique que find n'a rien trouvé) avec

Code :
  1. if [ "$a" eq "\n" ]


PS:  $? revient au même puisqu'il correspond au résultat de la dernière commande exécutée.


Message édité par jlighty le 28-11-2005 à 16:35:25
n°756845
heaven35
Posté le 28-11-2005 à 16:59:23  profilanswer
 

J'ai essayé mais ça ne marche pas...
Voici ce que j'ai ecrit :  
 
find /home -ctime 1 >/dev/null
if [ "$?" eq "\n" ];
then
echo " rien n'a été modifié"
else
echo " le repertoire a été modifié "
fi
exit 0
 
J'ai le retour :
 
test.sh[7]: eq: 0403-012 Un paramètre de la commande test est incorrect
 
Si je mets -eq j'ai le retour :  
 
test.sh[7]: \n: 0403-057 Erreur de syntaxe

n°756850
jlighty
Posté le 28-11-2005 à 17:04:05  profilanswer
 

en fait je me suis trompé, $? contient le code de retour de la fonction find  et non pas son contenu sur la sortie standard.
Il faut que tu passes par une variable intermédiaire. De plus si find ne trouve rien, elle n'affiche rien (je me suis fais piéger par echo $a -> echo -n $a :D )
Pour aller au plus simple :

Code :
  1. if [ -z `find .....` ];then echo "aucune réponse"; fi


Message édité par jlighty le 28-11-2005 à 17:12:24
n°756862
heaven35
Posté le 28-11-2005 à 17:18:56  profilanswer
 

-z ça veut dire quoi exactement???

mood
Publicité
Posté le 28-11-2005 à 17:18:56  profilanswer
 

n°756871
jlighty
Posté le 28-11-2005 à 17:27:30  profilanswer
 

man test
-z Vrai si la longueur de la chaîne est nulle.


Message édité par jlighty le 28-11-2005 à 17:28:14

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  [KSH] Enterrer le résultat d'un commande

 

Sujets relatifs
Erreur dans la commande configureinvite de commande root avec lilo
[KSH] Gargl, je sais plus ! Convertir une chaîne en entier et autre opCommande ls : afficher uniquement les nombres
Commande pour fermer une connexion sous un modem DSL-500 (busybox v1)commande linux pour mettre son écran en veille ?
resultat d'un delete (DEL) en DOScommande mail
[Debutant] lien entre la commande cc et gcccommande linux
Plus de sujets relatifs à : [KSH] Enterrer le résultat d'un commande


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR