Z zsh
:
if ((${#${(u)ARRAY_DISK_Quantity[@]}} == 1)); then
echo OK
else
echo not OK
fi
Gdzie (u)
jest flaga rozwinięcia parametru, aby rozwinąć unikalne wartości. Otrzymujemy więc liczbę unikalnych wartości w tablicy.
Wymień == 1
się <= 1
to warto rozważyć pusta tablica jest OK.
Za pomocą ksh93
możesz posortować tablicę i sprawdzić, czy pierwszy element jest taki sam jak ostatni:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if [ "$1" = "${@: -1}" ]; then
echo OK
else
echo not OK
fi
Z ksh88 lub pdksh / mksh:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if eval '[ "$1" = "${'"$#"'}" ]'; then
echo OK
else
echo not OK
fi
Z bash
prawdopodobnie potrzebujesz pętli:
unique_values() {
typeset i
for i do
[ "$1" = "$i" ] || return 1
done
return 0
}
if unique_values "${ARRAY_DISK_Quantity[@]}"; then
echo OK
else
echo not OK
fi
(działałby ze wszystkimi powłokami podobnymi do Bourne'a z obsługą tablicy (ksh, zsh, bash, yash)).
Zauważ, że zwraca OK dla pustej tablicy. Dodaj [ "$#" -gt 0 ] || return
na początku funkcji, jeśli nie chcesz tego.