Pages : 1
#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