Mój kod poniżej jest częścią zadania, ale ja "mopierając moją głowę o biurko, nie rozumiejąc, dlaczego nie przydzielił mi wartości "MIN" Próbowałem przypisać MIN i MAX do $ {LIST [0]} tylko po to, aby mieć pierwszy indeks w miejscu, ale zwraca całą tablicę , co nie ma dla mnie sensu. Wykonuję to na maszynie CentOS VM (której nie widzę, żeby coś zmienić). Wiem, że początek pierwszego i drugiego zdania "jeśli" wymaga lepszej logiki, ale bardziej zależy mi na wynikach MIN i MAX.
#!/bin/bash
LIST=()
read -p "Enter a set of numbers. " LIST
MIN=
MAX=
if [ ${#LIST[*]} == 0 ]; then echo "More numbers are needed."; fi
if [ ${#LIST[@]} -gt 0 ]; then
for i in ${LIST[@]}; do
if [[ $i -gt $MAX ]]; then
MAX=$i
fi
if [[ $i -lt $MIN ]]; then
MIN=$i
fi
done
echo Max is: $MAX.
echo Min is: $MIN.
fi
Odpowiedzi:
0 dla odpowiedzi № 1Kod jest prawie funkcjonalny.
Od LISTA $ to tablica, a nie zmienna, zmiana
read -p "Enter a set of numbers. " LIST
do:read -p "Enter a set of numbers. " -a LIST
Przesuń $ MIN i $ MAX kod init w dół 5 linii, (tuż przed
for
pętla):MIN= MAX=
... i zmień go na:
MIN=${LIST[0]} MAX=$MIN
I to zadziała.
echo 3 5 6 | ./minmax.sh
Wydajność:
Max is: 6.
Min is: 3.