Il (principale) problema con lo script è che l'impostazione min
e max
si verifica in una subshell, non nella shell principale. Quindi le modifiche non sono visibili dopo aver completato la pipeline.
Un altro è che stai chiamando leggere due volte: questo potrebbe essere inteso se vuoi saltare ogni altra linea, ma è un po 'insolito.
L'ultimo è quello min=a
set min
a a
, letteralmente. Si desidera impostarlo su $a
.
Utilizzando process substitution per sbarazzarsi del primo problema, rimuovere il (forse) non necessarie secondo in lettura, e che fissa le assegnazioni, il codice dovrebbe essere simile:
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
Per quelli di noi che hai perso la tua domanda precedente, puoi fornire ulteriori informazioni per questo. Che cosa stai cercando di cambiare? –
anche 'max = a' dovrebbe essere' max = $ a', lo stesso con 'min = a' dovrebbe essere' min = $ a' –
Cosa dovrebbe essere 'min' se ogni valore è maggiore di 20000000? Immagino che 'min' e' max' dovrebbero essere il tuo primo valore ... –