Forum Programmation.shell Script bash en une ligne

Posté par  .
Étiquettes : aucune
0
4
oct.
2006
Bonjour,

Je souhaite mettre une ligne de code dans mon cron sans passer par un appel de script externe.

Le but est de compter le nombre de fichier de plus de 60 minutes et si le chiffre est different de zero m'envoyer un email.

L'idee du script est :

if (find /var/www -name *.EDI -amin +60) then echo "test";else echo "test2"; fi

Je fais actuellement des echo pour mes tests.

DAns tous les cas que des fichiers soient la ou pas, il maffiche test.

Le test doit donc pas etre tres bon.

De plus l idee de base est de faire un test if sur :
find /var/www -name *.EDI -amin +60 | wc -l

Mais cela ne marche plus

Et derniere question, si je veux que le echo affiche le resultat du find ou du wc , quel variable dois je utiliser ?

Merci de votre aide

Pierre
  • # Chez moi ça marche

    Posté par  (site web personnel) . Évalué à 5.

    if [ `find . -amin +60 | wc -l` != 0 ]; then echo "oui"; else echo "non"; fi


    Par contre, le != est peut-être dépendant du shell, et les [ aussi. Il faudra peut être utiliser -ne et test.

    Et donc, var=`find . -amin +60 | wc -l` donne à var la valeur de l'expression, rappelée ensuite par $var. On peut dans les shells évolués (bash, zsh) utiliser $(...) pour `...`.
    • [^] # Re: Chez moi ça marche

      Posté par  (site web personnel) . Évalué à 2.

      Le [ est dans /bin donc meme si un shell le recode il devrait avoir le meme fontionnement, c'est à dire celui qu'on retrouve dans man test.

      Tout ca pour dire que c'est -ne pour les comparaisons numeriques.
      • [^] # Re: Chez moi ça marche

        Posté par  . Évalué à 2.

        Ok ca marche en effet, le probleme venait de mes testes avec ' ' au lieu de ` `

        Merci de votre aide.

        Pierre

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.