Der einfachste Weg, nach einem Index oder einem Schlüssel in einem Array zu suchen?

Mit:

set -o nounset

1) Mit einem indizierten array wie:

myArray=( "red" "black" "blue" )

Welches ist der kürzeste Weg, um zu überprüfen, wenn das element auf 1 gesetzt ist?
Manchmal benutze ich die folgenden:

test "${#myArray[@]}" -gt "1" && echo "1 exists" || echo "1 doesn't exist"

Ich würde gerne wissen, ob es eine bevorzugte.

2) Umgang mit nicht-konsekutive Indizes?

myArray=()
myArray[12]="red"
myArray[51]="black"
myArray[129]="blue"

Wie quick check, der '51' ist schon gesetzt, zum Beispiel?

3) Umgang mit assoziativen arrays?

declare -A myArray
myArray["key1"]="red"
myArray["key2"]="black"
myArray["key3"]="blue"

Wie quick check, 'key2' wird bereits verwendet, zum Beispiel?

Dank

BEARBEITET
Der einfachste Weg scheint mir:

if test "${myArray['key_or_index']+isset}"
    then
        echo "yes"
    else
        echo "no"
fi;

Dies funktioniert sowohl für indizierte und assoziative arrays. Keine Fehler angezeigt, die mit " set -o nounset.
Dank doubleDown für das headup.

InformationsquelleAutor der Frage Luca Borrione | 2012-11-04

Schreibe einen Kommentar