wake-up-neo.net

Shell Script: Richtige Methode zum Deklarieren eines leeren Arrays

Ich versuche, ein leeres Array in Shell Script zu deklarieren, aber es wird ein Fehler angezeigt.

#!/bin/bash

[email protected]

newlist=()

for l in $list; do

        newlist+=($l)

done

echo "new"
echo $newlist

Wenn ich es ausführe, bekomme ich test.sh: 5: test.sh: Syntax error: "(" unexpected

22
luizfzs

Führen Sie es mit bash aus:

bash test.sh

Und wenn Sie den Fehler sehen, scheint es, als würden Sie ihn tatsächlich mit Bindestrich ausführen:

> dash test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected

Nur dieses Mal haben Sie wahrscheinlich den Link dazu verwendet (/ bin/sh ->/bin/dash).

10
konsolebox

Ich finde folgende Syntax besser lesbar.

declare -a <name of array>

Für weitere Details siehe Bash Guide für Anfänger: 10.2. Array-Variablen .

7
shaffooo

Versuchen Sie dies, um zu sehen, ob Sie sich auf Bash oder Bash orientieren

ls -al /bin/sh

Wenn /bin/sh -> /bin/dash angezeigt wird, geben Sie Folgendes ein:

Sudo rm /bin/sh
Sudo ln -s /bin/bash /bin/sh

Dann tippe nochmal:

ls -al /bin/sh*

dann muss so etwas sagen: 

/bin/sh -> /bin/bash

Das bedeutet, dass jetzt sh richtig an Bash orientiert ist und Ihre Arrays funktionieren.

1
Usul Muhadiv

In BASH 4+ können Sie Folgendes zum Deklarieren eines leeren Arrays verwenden:

declare -a ARRAY_NAME=()

Sie können neue Elemente anfügen, indem Sie

ARRAY_NAME+=NEW_ITEM
0
TMT