Wie kann ich prüfen, ob in meinem Bash-Skript ein assoziatives Array-Element existiert?

7

Ich habe eine Reihe von Tieren:

%Vor%

und ich möchte überprüfen, ob ein Tier existiert oder nicht:

%Vor%

aber das funktioniert nicht.

    
sensorario 10.06.2015, 07:08
quelle

3 Antworten

9

In bash 4.3 kann der Operator -v auf Arrays angewendet werden.

%Vor%

In früheren Versionen müssten Sie sorgfältiger zwischen dem nicht vorhandenen Schlüssel und dem Schlüssel, der auf eine leere Zeichenfolge verweist, unterscheiden.

%Vor%     
chepner 10.06.2015 13:10
quelle
8

Es gibt mehrere Tippfehler in Ihrem Skript

Wenn ich es so laufe, bekomme ich folgende Fehlermeldungen von BASH:

%Vor%

Der erste besagt, dass wenn Sie horse als Index für ein assoziatives Array verwenden möchten, Sie ihm einen Wert zuweisen müssen. Ein leerer Wert (null) ist in Ordnung.

%Vor%

Die zweite Nachricht besagt, dass Sie den Wert, den Sie testen möchten, und die Klammer trennen müssen, da die eckige Klammer als Teil des Werts betrachtet wird, wenn sie nicht durch Leerzeichen

getrennt ist %Vor%

Schließlich existiert ein Element in einem assoziativen Array, wenn ihm ein Wert zugewiesen ist (selbst wenn dieser Wert null ist). Da die Frage, ob ein Array-Wert festgelegt wurde, bereits auf dieser Website beantwortet wurde , können wir die Lösung ausleihen

%Vor%

Für Ihre Bequemlichkeit hier ist das vollständige Skript:

%Vor%     
Dmitri Chubarov 10.06.2015 07:54
quelle
3

In BASH können Sie tun:

%Vor%

"${animals[horse]+foobar}" gibt foobar zurück, wenn horse ein gültiger Index im Array ist, andernfalls gibt es nichts zurück.

    
anubhava 10.06.2015 07:14
quelle

Tags und Links