Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/10/2019, à 06:35

Rugix

(Résolu) Demande d'aide

Bonjour,

Je suis débutant en bash.
Je suis en plein mini projet dans lequel le but est de Ping un site dans mon cas "Ac-Nantes.fr" il faut faire des pings toutes les 5mins, envoyer les valeurs des pings dans un fichier texte ensuite il faut bout de une heure faire la moyenne des 12 valeurs (5min x 12 = 1heure).Je determine la moyenne ainsi


SUM=0
NB_LINE=0
while read VAL
do

  SUM=$((SUM+VAL))
  NB_LINE=$((NB_LINE+1))

done < fichier

SUM=$((SUM/NB_LINE))

J'aimerais en utilisant while read récupérer les valeurs extrêmes(min et max) mais je ne trouve pas comment le faire.

Merci d'avance.


Modération : merci d'utiliser les balises code (explications ici).

Dernière modification par Rugix (Le 22/10/2019, à 09:22)

Hors ligne

#2 Le 22/10/2019, à 07:21

pingouinux

Re : (Résolu) Demande d'aide

Bonjour,

sum=0
nb_line=0
vmin=999999999 # Valeur supérieure à toutes celles du fichier
vmax=0         # Valeur inférieure à toutes celles du fichier
while read val
do

  ((sum+=val))
  ((nb_line++))
  [[ val -lt vmin ]] && vmin=$val
  [[ val -gt vmax ]] && vmax=$val

done < fichier

moy=$(bc <<<"scale=2;$sum/$nb_line")

echo moy=$moy vmin=$vmin vmax=$vmax

ou bien

vmin=$(sort -n fichier|head -1)
vmax=$(sort -rn fichier|head -1)

Hors ligne

#3 Le 22/10/2019, à 09:19

Rugix

Re : (Résolu) Demande d'aide

Bonjour,

Merci beaucoup de votre réponse cela marche parfaitement.

Hors ligne