Dengan zsh
:
if ((${#${(u)ARRAY_DISK_Quantity[@]}} == 1)); then
echo OK
else
echo not OK
fi
Di mana (u)
bendera ekspansi parameter untuk memperluas nilai unik . Jadi kami mendapatkan hitungan nilai unik dalam array.
Ganti == 1
dengan <= 1
apakah Anda ingin menganggap array kosong adalah OK.
Dengan ksh93
, Anda bisa mengurutkan array dan memeriksa apakah elemen pertama sama dengan yang terakhir:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if [ "$1" = "${@: -1}" ]; then
echo OK
else
echo not OK
fi
Dengan ksh88 atau pdksh / mksh:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if eval '[ "$1" = "${'"$#"'}" ]'; then
echo OK
else
echo not OK
fi
Dengan bash
, Anda mungkin perlu loop:
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
(akan bekerja dengan semua shell Bourne-like dengan dukungan array (ksh, zsh, bash, yash)).
Perhatikan bahwa ia mengembalikan OK untuk array kosong. Tambahkan a [ "$#" -gt 0 ] || return
di awal fungsi jika Anda tidak menginginkannya.