2016-05-03 6 views
0

gleiche Problem wie this OP erklärt, sondern muss eine separate Ursache seinFehler 'Syntaxfehler: "(" unerwartet', wenn Arrays in bash

Das folgende Skript.

#!/bin/sh 
arr=("cat" "dog" "bird") 

Works interaktiv (debian) aber nicht, wenn sie von crontab mit genannt.

/bin/sh: 2: /path/zero_check.sh: Syntax error: "(" unexpected 

ich habe versucht, mit #!/bin/bash shebang und erklärt Array mit declare -a arr=("cat" "dog" "bird"), keine Wirkung

Irgendeine Idee warum?

+1

Wie werden Sie Ihr Skript in crontab aufrufen? – fedorqui

+1

Die Fehlermeldung ist ein klarer Hinweis, dass Bash nicht zum Ausführen des Skripts verwendet wird. –

+0

Ich habe versucht mit beiden shebangs, aber kopierte das Skript an einer anderen Stelle auf den Fehler. Die folgende Lösung funktioniert. – geotheory

Antwort

1

Geben Sie Ihren Interpreter explizit im crontab-Eintrag an. Verwenden Sie

bash /path/zero_check.sh 

statt

/path/zero_check.sh 
+2

Dies sollte nicht das Problem sein, wenn das Skript bereits den '#!/Bin/bash'-Header enthält. – fedorqui

+0

Ich glaube, ich habe das Arbeitsskript einfach an der falschen Stelle kopiert. Die Lösung funktioniert. – geotheory

+1

Wenn dies die Antwort ist, gibt es ein anderes Problem in Ihrem Skript, das Sie ignorieren. :( – SaintHax

5

Das Problem hierbei ist, dass Sie diese shebang verwenden:

#!/bin/sh 

Während arrays etwas Bash spezifisch sind, dass Shell nicht zulässt.

So, damit es funktioniert, die shebang des Skripts zu Bash ändern:

#!/bin/bash