Mit zsh
:
if ((${#${(u)ARRAY_DISK_Quantity[@]}} == 1)); then
echo OK
else
echo not OK
fi
Wo (u)
befindet sich ein Parametererweiterungsflag zum Erweitern eindeutiger Werte? Wir erhalten also eine Zählung der eindeutigen Werte im Array.
Ersetzen == 1
durch <= 1
, wenn Sie davon ausgehen möchten, dass ein leeres Array in Ordnung ist.
Mit ksh93
können Sie das Array sortieren und prüfen, ob das erste Element mit dem letzten übereinstimmt:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if [ "$1" = "${@: -1}" ]; then
echo OK
else
echo not OK
fi
Mit ksh88 oder pdksh / mksh:
set -s -- "${ARRAY_DISK_Quantity[@]}"
if eval '[ "$1" = "${'"$#"'}" ]'; then
echo OK
else
echo not OK
fi
Mit bash
bräuchten Sie wahrscheinlich eine Schleife:
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
(würde mit allen Bourne-ähnlichen Shells mit Array-Unterstützung (ksh, zsh, bash, yash) funktionieren).
Beachten Sie, dass es für ein leeres Array OK zurückgibt. Fügen Sie [ "$#" -gt 0 ] || return
am Anfang der Funktion ein hinzu, wenn Sie das nicht möchten.