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

 


Dernière réponse
Sujet : [KSH] Enterrer le résultat d'un commande
jlighty man test
-z Vrai si la longueur de la chaîne est nulle.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
jlighty man test
-z Vrai si la longueur de la chaîne est nulle.
heaven35 -z ça veut dire quoi exactement???
jlighty 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

heaven35 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
jlighty 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.

heaven35 Désolé, je débute et je ne comprends pas...
jlighty tu rediriges la sortie de la fonction find dans une variable puis tu compares cette variable à "\n".
heaven35 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....
heaven35 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  
#  
asmodaiii 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é

heaven35 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
 

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)