Avec zsh
:
if ((${#${(u)ARRAY_DISK_Quantity[@]}} == 1)); then
echo OK
else
echo not OK
fi
Où se (u)
trouve un indicateur d'extension de paramètre pour développer des valeurs uniques . Nous obtenons donc un nombre de valeurs uniques dans le tableau.
Remplacez == 1
par si <= 1
vous voulez considérer qu'un tableau vide est OK.
Avec ksh93
, vous pouvez trier le tableau et vérifier que le premier élément est le même que le dernier:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if [ "$1" = "${@: -1}" ]; then
echo OK
else
echo not OK
fi
Avec ksh88 ou pdksh / mksh:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if eval '[ "$1" = "${'"$#"'}" ]'; then
echo OK
else
echo not OK
fi
Avec bash
, vous auriez probablement besoin d'une boucle:
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
(fonctionnerait avec tous les shells de type Bourne avec le support des tableaux (ksh, zsh, bash, yash)).
Notez qu'il renvoie OK pour un tableau vide. Ajoutez un [ "$#" -gt 0 ] || return
au début de la fonction si vous ne le souhaitez pas.