[bash] existe-t-il un moyen de trouver le min et max dans...

Résolu
Swiss Knight Messages postés 2257 Statut Membre -  
Swiss Knight Messages postés 2257 Statut Membre -
Bonjour !

Existe-t-il un moyen simple en bash pour trouver le minimum et le maximum de nombres contenus dans une chaîne ?
Exemple :
$ A=78,99,12

Un truc qui retourne 12 comme minimum et 99 comme maxi ?

Mieux : un truc qui retourne la moyenne du min trouvé et du max trouvé, i.e. ici (99+12)/2
arrondi à l'entier le plus proche (bon en l'occurrence ce sera l'entier directement supérieur, mais si on faisait une division par 3 ce pourrait être différent)

Je n'ai pas trouvé de fonction de ce genre :
min(A)=12
max(A)=99
même dans bc.

Merci beaucoup !

--
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    awk sait faire
    $ awk '{n=split($0, a, ","); asort(a); print int((a[1]+a[n])/2+.5)}' <<<"78,99,12"
    56
    $ 
    
    2
  2. Utilisateur anonyme
     
    salut,
    bash sait faire
    for i in ${var//,/ }
    do
       min=$((min?(min>i?i:min):i))
       max=$((max?(max<i?i:max):i))
    done
    echo "min: $min - max: $max - moy: $(((max+min)/2))"
    min: 12 - max: 99 - moy: 55
    2
  3. Swiss Knight Messages postés 2257 Statut Membre 110
     
    :-)
    Vos deux solutions fonctionnent très bien. J'ai encore beaucoup à apprendre.
    Merci !

    "Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
    0