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