Enterrer le résultat d'un commande [KSH] - Linux et OS Alternatifs
Marsh Posté le 28-11-2005 à 12:34:14
Je n'utilise pas ksh mais en tout cas ton code marche en bash:
Code :
|
Marsh Posté le 28-11-2005 à 14:20:32
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
#
Marsh Posté le 28-11-2005 à 15:39:39
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....
Marsh Posté le 28-11-2005 à 15:52:27
tu rediriges la sortie de la fonction find dans une variable puis tu compares cette variable à "\n".
Marsh Posté le 28-11-2005 à 16:33:40
si tu mets l'affichage de find dans une variable :
ex:
Code :
|
puis que tu compares $a à "\n" ( le retour chariot indique que find n'a rien trouvé) avec
Code :
|
PS: $? revient au même puisqu'il correspond au résultat de la dernière commande exécutée.
Marsh Posté le 28-11-2005 à 16:59:23
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
Marsh Posté le 28-11-2005 à 17:04:05
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 )
Pour aller au plus simple :
Code :
|
Marsh Posté le 28-11-2005 à 17:27:30
man test
-z Vrai si la longueur de la chaîne est nulle.
Marsh Posté le 28-11-2005 à 12:18:20
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