Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Nalezení maximální hodnoty pole v Bashi  (Přečteno 3597 krát)

martin.nohejl

  • Aktivní člen
  • *
  • Příspěvků: 173
Nalezení maximální hodnoty pole v Bashi
« kdy: 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
« Poslední změna: 09 Května 2015, 15:35:19 od GdH »
Hlavní PC: Intel Core i5 2500 3,30GHz Sandy Bridge, MB Gigabyte H61M, DIMM DDR3 8GB 1333MHz, 1TB SATA (2 oddíly / 200GB, /home 800GB), Ubuntu 14.04CZ 32bit
Záložní PC: AMD Athlon(TM)XP 1700+, 512 MB RAM, NVIDIA GeForce4 MX 4000, disk 72GB IDE, Ubuntu 10.10CZ 32 bit

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Nalezení maximální hodnoty pole v Bashi
« Odpověď #1 kdy: 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

tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

Cuore

  • Závislák
  • ***
  • Příspěvků: 2534
Re:Nalezení maximální hodnoty pole v Bashi
« Odpověď #2 kdy: 09 Května 2015, 06:31:17 »
třeba
Kód: [Vybrat]
sort -n a pak tail

martin.nohejl

  • Aktivní člen
  • *
  • Příspěvků: 173
Re:Nalezení maximální hodnoty pole v Bashi
« Odpověď #3 kdy: 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Á!
« Poslední změna: 09 Května 2015, 15:36:40 od GdH »
Hlavní PC: Intel Core i5 2500 3,30GHz Sandy Bridge, MB Gigabyte H61M, DIMM DDR3 8GB 1333MHz, 1TB SATA (2 oddíly / 200GB, /home 800GB), Ubuntu 14.04CZ 32bit
Záložní PC: AMD Athlon(TM)XP 1700+, 512 MB RAM, NVIDIA GeForce4 MX 4000, disk 72GB IDE, Ubuntu 10.10CZ 32 bit

Jakub Vaněk

  • Stálý člen
  • **
  • Příspěvků: 752
    • Web programátora a studenta Jakuba Vaňka
Re:Nalezení maximální hodnoty pole v Bashi
« Odpověď #4 kdy: 09 Května 2015, 14:42:40 »
používej značku code, je nahoře s ikonou #
Notebook: Lenovo Thinkpad X200, Xubuntu 16.04

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Nalezení maximální hodnoty pole v Bashi
« Odpověď #5 kdy: 09 Května 2015, 15:34:30 »
Kód: [Vybrat]
IFS=$'\n' ; echo "${pole[*]}" |  sort -nr | head -n1

Martin Šácha

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • ******
  • Příspěvků: 5153
Re:Nalezení maximální hodnoty pole v Bashi
« Odpověď #6 kdy: 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.
Mint MATE 64bit / DuckDuckGo.com
Programátoři považují WYSIWYG za špatné u kódu i u žen. Programátor chce "dostat to, co žádá“ – kód tajemný, neodpouštějící, nebezpečný.

jmp

  • Host
Re:Nalezení maximální hodnoty pole v Bashi
« Odpověď #7 kdy: 09 Května 2015, 20:41:36 »
ty domácí úkoly jsou prostě frustrující...  ;D

 

Provoz zaštiťuje spolek OpenAlt.