Verwendung:Der einfachste Weg, um nach einem Index oder einem Schlüssel in einem Array zu suchen?
set -o nounset
1) wie ein indiziertes Array mit:
myArray=("red" "black" "blue")
Welche der kürzeste Weg 1, wenn Element zu überprüfen ist, festgelegt ist?
Manchmal benutze ich die folgenden:
test "${#myArray[@]}" -gt "1" && echo "1 exists" || echo "1 doesn't exist"
Ich möchte wissen, ob es eine bevorzugte ist.
2) Wie man mit nicht aufeinanderfolgenden Indexen umgeht?
myArray=()
myArray[12]="red"
myArray[51]="black"
myArray[129]="blue"
Wie schnell überprüfen, dass "51" zum Beispiel bereits eingestellt ist?
3) Wie geht man mit assoziativen Arrays um?
declare -A myArray
myArray["key1"]="red"
myArray["key2"]="black"
myArray["key3"]="blue"
Wie schnell überprüfen, dass "key2" zum Beispiel bereits verwendet wird?
Dank
Der einfachste Weg scheint mir EDITED:
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 mit Set -o Nomenset angezeigt.
Dank DoubleDown für den Headup.
Ich löste auf diese Weise: wenn Test "$ {myArray ['key_or_index'] + isset}"; dann echo "ja"; sonst echo "nein"; fi; Es scheint mir der einfachste Weg zu sein und gilt für indizierte und assoziative Arrays. Danke –
+1! Danke für die '$ {var + val}' -Notation! Ich las wieder "Man Bash" und ich stellte fest, dass ich es vorher übersprungen hatte! – TrueY
@doubleDown Wie benutzt man [$ {array [key] + abc}] in einer if-Klausel, um nur etwas zu tun, wenn [$ {array [key] + abc}] nicht existiert? – olala