के साथ 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यदि आप ऐसा नहीं चाहते तो फ़ंक्शन के प्रारंभ में जोड़ें ।