2012-10-05 14 views
12

Eventuali duplicati:
How to sort an array in BASHCome trovare il numero più alto in una matrice?

mi hanno numeri nella matrice 10 30 44 44 69 12 11.... Come visualizzare il massimo dalla matrice?

echo $NUM //result 69 
+1

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

+1

che cosa hai provato fino ad ora? Prova a seguire l'esempio [rubber duck] (http://www.codinghorror.com/blog/2012/03/rubber-duck-problem-solving.html). – Pureferret

risposta

26

È possibile utilizzare sort per scoprirlo.

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

In alternativa, cercare la massima te:

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

Grazie mille E se ci fosse una stringa invece di numeri? ar = ("dsasd" "dsdas" "dasdsadaasdadadsadad") – Charlie

+0

@Charlie: Quindi è possibile utilizzare il confronto di stringhe '[[$ n> $ max]]'. Inoltre, è possibile rimuovere l'inizializzazione di max. – choroba

+1

O forse ar [0] se c'è un solo elemento ... – choroba

2

provare questo:

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 

risultato in 100

+0

Ecco lo stesso problema della risposta sopra - c'è un problema con max = 0 - cosa succede se tutti gli argomenti sono negativi? .. Ecco una soluzione migliore - https://stackoverflow.com/a/40719447/2107205 – mato

Problemi correlati