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

Název: Nalezení maximální hodnoty pole v Bashi
Přispěvatel: martin.nohejl 08 Května 2015, 23:07:13
Ahojte, potřebuji najít maximální hodnotu v bashi. Funguje mi na to script:

Kód: [Vybrat]
#!/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
Název: Re:Nalezení maximální hodnoty pole v Bashi
Přispěvatel: ntz_reloaded 09 Května 2015, 03:30:04
Kód: [Vybrat]
Maximální hodnota pole je 37.65
ja tam vidim 39.12 ... nerekl bych, ze to funguje

Název: Re:Nalezení maximální hodnoty pole v Bashi
Přispěvatel: Cuore 09 Května 2015, 06:31:17
třeba
Kód: [Vybrat]
sort -n a pak tail
Název: Re:Nalezení maximální hodnoty pole v Bashi
Přispěvatel: martin.nohejl 09 Května 2015, 13:56:19
Kód: [Vybrat]
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:

Kód: [Vybrat]
#!/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
Kód: [Vybrat]
sort -n a pak tail

sort -n funguje na řádky, je potřeba proto zaměnit mezery za konce řádku, pak to funguje takto:
Kód: [Vybrat]
#!/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Á!
Název: Re:Nalezení maximální hodnoty pole v Bashi
Přispěvatel: Jakub Vaněk 09 Května 2015, 14:42:40
používej značku code, je nahoře s ikonou #
Název: Re:Nalezení maximální hodnoty pole v Bashi
Přispěvatel: GdH 09 Května 2015, 15:34:30
Kód: [Vybrat]
IFS=$'\n' ; echo "${pole[*]}" |  sort -nr | head -n1
Název: Re:Nalezení maximální hodnoty pole v Bashi
Přispěvatel: Martin Šácha 09 Května 2015, 20:26:09
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.
Název: Re:Nalezení maximální hodnoty pole v Bashi
Přispěvatel: jmp 09 Května 2015, 20:41:36
ty domácí úkoly jsou prostě frustrující...  ;D