El problema (principal) con su secuencia de comandos es que la configuración min
y max
ocurre en una subcadena, no en su caparazón principal. Entonces los cambios no son visibles después de que la tubería está lista.
Otra es que está llamando a leer dos veces: esto podría ser útil si quiere omitir cualquier otra línea, pero eso es un poco inusual.
El último es que min=a
establece min
a a
, literalmente. Desea configurarlo en $a
.
Usando process substitution para deshacerse del primer problema, la eliminación de la segunda lectura (posiblemente) un-necesario, y la fijación de las asignaciones, el código debe ser similar:
max=0
min=20000000
while read a
do
if [[ $a -gt $max ]]
then
max=$a
fi
if [[ $a -lt $min ]]
then
min=$a
fi
done < <(cat) # careful with the syntax
echo $max
echo $min
Para aquellos de nosotros que se perdió tu pregunta anterior, ¿puedes proporcionar más información sobre esta? ¿Qué var estás tratando de cambiar? –
también 'max = a' debe ser' max = $ a', lo mismo con 'min = a' debe ser' min = $ a' –
¿Qué debe ser 'min' si cada valor es mayor que 20000000? Supongo que 'min' y' max' deberían ser su primer valor ... –