Forum Programmation.shell qui peut m'expliquer ?

Posté par  .
Étiquettes : aucune
0
21
mai
2008
Bonjour,

Je souhaite mettre en place lepetit script suivant :

#!/bin/bash
/usr/local/nagios/libexec/check_http -H 10.0.0.1 -u http://monsite.fr > monsite.fr
for ok in 'awk -F " " '{print $1, $2, $3, $4, $5 }' monsite.fr';
do echo "monsite.fr fonctionne"; done;

Ce script fait ce qu'il a faire mais m'affiche ainsi la réponse :

[root]# ./check_monsite.sh
monsite.fr fonctionne
monsite.fr fonctionne
monsite.fr fonctionne
monsite.fr fonctionne
monsite.fr fonctionne
monsite.fr fonctionne

Question : pourquoi le résultat est il affiché plusieurs fois ?

Merci d'avance pour vos réponses.
  • # résolu

    Posté par  . Évalué à 2.

    J'ai compris :

    en fait il relit 5 fois le fichier monsite.fr à la recherche du ok dans le champ 1 puis dans le champ 2 (ou avec) et ainsi de suite jusqu'au 5 eme champ.

    Bon .. j'ai modifié ce bout de code, et ca fonctionne ...
    • [^] # Re: résolu

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

      tu n'as pas résolu ton probleme :

      for ok in 'awk -F " " '{print $1, $2, $3, $4, $5 }' monsite.fr'; do echo "$ok monsite.fr fonctionne"; done;

      awk -F " " {print monsite.fr fonctionne
      , monsite.fr fonctionne
      , monsite.fr fonctionne
      , monsite.fr fonctionne
      , monsite.fr fonctionne
      } monsite.fr monsite.fr fonctionne
  • # de l'art de prendre les quotes dans le bon sens

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

    parce que tu fais echo "monsite.fr fonctionne" en iterant sur la chaine 'awk -F " " '{print $1, $2, $3, $4, $5 }' monsite.fr'

    je pense que tu veux faire ton itération sur le contenur du fichier produit par http_check et non sur ta chaine contenant du code ;)

    il te faut faire une evaluation de ta chaine ;)

Suivre le flux des commentaires

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