/ / Skrypt Unix - Znalezienie minimum i maksimum (powłoki Bash) - bash, shell, unix, scripting

Skrypty uniksowe - Znajdowanie minimum i maksimum (powłoki Bash) - bash, shell, unix, scripting

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 № 1

Kod jest prawie funkcjonalny.

  1. 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

  2. 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.