Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: martin.nohejl 08 Května 2015, 23:07:13
-
Ahojte, potřebuji najít maximální hodnotu v bashi. Funguje mi na to script:
#!/bin/sh
pole=( 37.65 37.2 36.9 39.12 35.25 )
MAX=${pole[0]}
for (( i=1; $i-${#pole[*]} ; i=$i+1 ))
do
if [ $(echo "${pole[i]} > $MAX" |bc) -eq 1 ]
then
MAX=${pole[i]}
fi
done
echo Maximální hodnota pole je $MAX
ale chci se zeptat, jestli to nejde nějak zjednodušit. Děkuji
-
Maximální hodnota pole je 37.65
ja tam vidim 39.12 ... nerekl bych, ze to funguje
-
třeba
sort -n
a pak tail
-
Maximální hodnota pole je 37.65
ja tam vidim 39.12 ... nerekl bych, ze to funguje
No nějak se mi do toho scriptu při překopírování dostal binec, má to vypadat takto:
#!/bin/sh
pole=( 37.65 37.2 36.9 39.12 35.25 )
MAX=${pole[0]}
for (( i=1; $i-${#pole[*]} ; i=$i+1 ))
do
if [ $(echo "${pole[i]} > $MAX" |bc) -eq 1 ]
then
MAX=${pole[i]}
fi
done
echo Maximální hodnota pole je $MAX
třeba sort -n
a pak tail
sort -n funguje na řádky, je potřeba proto zaměnit mezery za konce řádku, pak to funguje takto:
#!/bin/sh
pole=( 37.65 37.2 36.9 39.12 35.25 )
MAX=$(echo ${pole[*]} | sed 's/ \+\|\t\+/\n/g' | sort -n | tail -1)
echo Maximální hodnota pole je $MAX
Ale nevím, jestli je to lepší než 1.skript
TEĎ SE DÍVÁM, ŽE MI TO TAM POŘÁD TEN BINEC DÁVÁ!
-
používej značku code, je nahoře s ikonou #
-
IFS=$'\n' ; echo "${pole[*]}" | sort -nr | head -n1
-
TEĎ SE DÍVÁM, ŽE MI TO TAM POŘÁD TEN BINEC DÁVÁ!
Priste se prosim nejdriv zamysli, napocitej do deseti, a pak nadavej. CAPSLOCK SI NECH NA DOMA.
-
ty domácí úkoly jsou prostě frustrující... ;D