З zsh
:
if ((${#${(u)ARRAY_DISK_Quantity[@]}} == 1)); then
echo OK
else
echo not OK
fi
Де (u)
прапор розширення параметра для розширення унікальних значень. Таким чином, ми отримуємо підрахунок унікальних значень у масиві.
Замініть == 1
на те <= 1
, що ви хочете вважати порожнім масив ОК.
С ksh93
, ви можете сортувати масив і перевірити, чи є перший елемент таким же, як і останній:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if [ "$1" = "${@: -1}" ]; then
echo OK
else
echo not OK
fi
З ksh88 або pdksh / mksh:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if eval '[ "$1" = "${'"$#"'}" ]'; then
echo OK
else
echo not OK
fi
З bash
, можливо, вам знадобиться цикл:
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
(працював би з усіма оболонками, що нагадують Борну з підтримкою масиву (ksh, zsh, bash, yash)).
Зауважте, що він повертає ОК для порожнього масиву. Додайте а [ "$#" -gt 0 ] || return
на початку функції, якщо цього не хочете.