2012-10-05 64 views
12

可能重複:
How to sort an array in BASH如何查找數組中的最大數字?

我有一個數字數組10 30 44 44 69 12 11...英寸如何顯示數組中的最高值?

echo $NUM //result 69 
+1

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

+1

你有什麼嘗試到目前爲止?嘗試關注[橡皮鴨](http://www.codinghorror.com/blog/2012/03/rubber-duck-problem-solving.html)示例。 – Pureferret

回答

26

您可以使用sort找出來。

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

另外,搜索最大自己:

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

非常感謝你 如果有一個字符串,而不是數字? ar =(「dsasd」「dsdas」「dasdsadaasdadadsadad」) – Charlie

+0

@Charlie:然後您可以使用字符串比較'[[$ n> $ max]]''。此外,您可以刪除最大值的初始化。 – choroba

+1

或者如果只有一個元素,可能是ar [0] ... – choroba

2

試試這個:

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 

結果100

+0

以上問題與上面的答案相同 - max = 0時出現問題 - 如果所有參數均爲負值,該怎麼辦? ..這是一個更好的解決方案 - https://stackoverflow.com/a/40719447/2107205 – mato