Bash-array: Syntax-Fehler, Unerwartete
Schreibe ich dieses einfache bash-Skript wie folgt aus.
#!/bin/bash
array=( /home/abc/Downloads/something.bat /home/abc/Downloads/smb.conf )
echo ${array[@]}
Ich erwartet, dass es zu drucken Sie alle Namen der Dateien in das array. Aber ich bekomme diese Fehlermeldung statt:
test.sh: 3: Syntax error: "(" unexpected
Wenn ich die Erklärung von array zu
array = {/home/abc/Downloads/something.bat /home/abc/Downloads/smb.conf}
dieser Fehler geht Weg, aber ich habe noch neue Fehler
test.sh: 3: array: not found
test.sh: 4: Bad substitution
Wie kann ich dieses Problem beheben? Dies ist mein erstes mal in der shell-Programmierung, so bin ich nicht in der Lage, um die Probleme zu beheben mich.
GELÖST:
Ich ausgeführt wurde es als sh test.sh aber ich vergaß, ich hatte, um ihn auszuführen, als bash test.sh
- Das ist kein assoziatives array. Es ist eine normale, numerisch indiziertes array.
- Oh, Ok. Ich werde es Bearbeiten
- Die Lösung posten als Antwort und markieren Sie es akzeptiert, nicht Bearbeiten, es in der Frage. Auch, nicht Bearbeiten Sie den Titel, es zu lösen, die Webseite, markiert die Frage als gelöst, wenn Sie akzeptieren eine Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Variablen-Zuweisungen können nicht einen Raum um die
=
Zeichen:sind Sie sicher?
Zeiger: Leerzeichen sind wichtig mit variabler Zuordnung in der BASH. Verwenden Sie Sie nicht vor oder nach das Gleichheitszeichen.
sh
undbash
.sh
ist nicht garantiertbash
in einigen Umgebungen. In der Tatsh
ist oft verbunden mit rein-POSIX-shells wiedash
.Sind Sie mit einem DOS-editor erstellen Sie Ihr Drehbuch?
Bash etc Muscheln nicht mag CRLF-Paare, nur LF (oder
\r\n
chars VS einfach nur\n
char).Setzen Sie Ihr Skript durch diesen test
Siehst du '^M' chars am Ende der Zeilen? Wenn ja das ist eine dos-Datei.
Sehen, wenn Ihr system hat dos2unix verwenden Sie es dann, wie
Auch, wie einige Leute haben kommentiert, bitte Bearbeiten Sie Ihrer ursprünglichen Frage zu beseitigen, die Räume rund um Ihr
=
Zeichen in den Zuordnungen zuarray
.Ich hoffe, das hilft.