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ế == 1
bằng <= 1
là 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 ] || return
khi bắt đầu chức năng nếu bạn không muốn điều đó.