2012-10-05 10 views
12

Powiel możliwe:
How to sort an array in BASHJak znaleźć najwyższy numer w tablicy?

Mam liczby w tablicy 10 30 44 44 69 12 11.... Jak wyświetlić najwyższą z tablicy?

echo $NUM //result 69 
+1

http://stackoverflow.com/questions/7442417/how-to-sort-an-array-in-bash – paul

+1

Cóżeś próbowałem do tej pory? Spróbuj postępować zgodnie z przykładem [rubber duck] (http://www.codinghorror.com/blog/2012/03/rubber-duck-problem-solving.html). – Pureferret

Odpowiedz

26

Można użyć sort się dowiedzieć.

#! /bin/bash 
ar=(10 30 44 44 69 12 11) 
IFS=$'\n' 
echo "${ar[*]}" | sort -nr | head -n1 

Alternatywnie, szukaj maksimum siebie:

max=${ar[0]} 
for n in "${ar[@]}" ; do 
    ((n > max)) && max=$n 
done 
echo $max 
+0

Bardzo dziękuję A jeśli był ciąg zamiast liczb? ar = ("dsasd" "dsdas" "dasdsadaasdadadsadad") – Charlie

+0

@Charlie: Następnie możesz użyć porównania łańcuchów '[[$ n> $ max]]'. Możesz także usunąć inicjalizację maks. – choroba

+1

A może ar [0] jeśli jest tylko jeden element ... – choroba

2

spróbuj tego:

a=(10 30 44 44 69 12 11 100) 

max=0 
for v in ${a[@]}; do 
    if (($v > $max)); then max=$v; fi; 
done 
echo $max 

wynik w 100

+0

Oto ten sam problem, co w powyższej odpowiedzi - jest problem z max = 0 - co jeśli wszystkie argumenty są negatywne? .. Oto lepsze rozwiązanie - https://stackoverflow.com/a/40719447/2107205 – mato

Powiązane problemy