2012-10-05 16 views
12

Duplicar posible:
How to sort an array in BASH¿Cómo encontrar el número más alto en una matriz?

que tienen números en la matriz 10 30 44 44 69 12 11.... Cómo mostrar el más alto de la matriz?

echo $NUM //result 69 
+1

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

+1

Lo Tiene intentado hasta ahora? Intenta seguir el ejemplo [rubber duck] (http://www.codinghorror.com/blog/2012/03/rubber-duck-problem-solving.html). – Pureferret

Respuesta

26

Se puede utilizar para averiguar sort.

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

Alternativamente, la búsqueda de la máxima personalmente:

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

Muchas gracias ¿Y si hubiera una cadena en lugar de números? ar = ("dsasd" "dsdas" "dasdsadaasdadadsadad") – Charlie

+0

@Charlie: Entonces puede usar la comparación de cadenas '[[$ n> $ max]]'. Además, puede eliminar la inicialización de max. – choroba

+1

O tal vez ar [0] si solo hay un elemento ... – choroba

2

probar esto:

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 

resultado en 100

+0

Este es el mismo problema que en la respuesta anterior: hay un problema con max = 0, ¿y si todos los argumentos son negativos? ... Aquí hay una solución mejor - https://stackoverflow.com/a/40719447/2107205 – mato

Cuestiones relacionadas