Với zsh:
if ((${#${(u)ARRAY_DISK_Quantity[@]}} == 1)); then
echo OK
else
echo not OK
fi
Trường hợp (u)một cờ mở rộng tham số để mở rộng các giá trị duy nhất . Vì vậy, chúng tôi đang nhận được một số lượng các giá trị duy nhất trong mảng.
Thay thế == 1bằng <= 1là bạn muốn xem xét một mảng trống là OK.
Với ksh93, bạn có thể sắp xếp mảng và kiểm tra xem phần tử đầu tiên có giống với phần tử cuối cùng không:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if [ "$1" = "${@: -1}" ]; then
echo OK
else
echo not OK
fi
Với ksh88 hoặc pdksh / mksh:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if eval '[ "$1" = "${'"$#"'}" ]'; then
echo OK
else
echo not OK
fi
Với bash, bạn có thể cần một vòng lặp:
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
(sẽ hoạt động với tất cả các shell giống như Bourne với hỗ trợ mảng (ksh, zsh, bash, yash)).
Lưu ý rằng nó trả về OK cho một mảng trống. Thêm một [ "$#" -gt 0 ] || returnkhi bắt đầu chức năng nếu bạn không muốn điều đó.