Con zsh
:
if ((${#${(u)ARRAY_DISK_Quantity[@]}} == 1)); then
echo OK
else
echo not OK
fi
Dónde (u)
hay una bandera de expansión de parámetros para expandir valores únicos . Así que estamos obteniendo un recuento de los valores únicos en la matriz.
Reemplazar == 1
con <= 1
si desea considerar que una matriz vacía está bien.
Con ksh93
, puede ordenar la matriz y verificar que el primer elemento sea el mismo que el último:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if [ "$1" = "${@: -1}" ]; then
echo OK
else
echo not OK
fi
Con ksh88 o pdksh / mksh:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if eval '[ "$1" = "${'"$#"'}" ]'; then
echo OK
else
echo not OK
fi
Con bash
, probablemente necesites un bucle:
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
(funcionaría con todos los shells tipo Bourne con soporte de matriz (ksh, zsh, bash, yash)).
Tenga en cuenta que devuelve OK para una matriz vacía. Agregue un [ "$#" -gt 0 ] || return
al comienzo de la función si no quiere eso.