2016-04-25 12 views
1

Ich versuche, ein Skript in Vagrant (vagrant ssh) zu laufen, aber ich die Störung erhalten unten:Syntaxfehler beim Vagrant Bash-Skript in Homestead laufen

Tests/Einheit/runTests.sh: 4: Tests /unit/runTests.sh: Syntaxfehler: „(“ unexpected

Befehl: sh Tests/Einheit/runTests.sh

Das Skript läuft gut außerhalb für Vagabund und die einzigen Skript Informationen, die ich habe in der Lage zu Finden Sie über Vagabund sind im Zusammenhang mit Bestimmungen, die nicht das ist, was ich in diesem Fall.

Script:

#!/bin/bash 
i=0 
fails=() 

for d in tests/unit/*/ ; do 
    eval "vendor/bin/peridot -c tests/unit/peridot.php $d" 

    if [ $? -eq 1 ] 
     then 
      fails[$i]=$d 
    fi 
    wait 
done 

for ((j=0; j < ${#fails[@]}; j++)) do 
    echo "${fails[$j]}" 
done 

Ich habe gelesen, über "(" Syntaxfehler Strich wird im Zusammenhang mit, aber ich die Vorschläge bin mit, dass diese Beiträge hatten (#/bin/bash!).

Vielen Dank für Anregungen.

Antwort

3

Command: sh tests/unit/runTests.sh

Es bedeutet, dass Sie (vagrant) versucht, Ihr Skript in 'sh', nicht in 'bash' zu laufen. In diesem Fall wird die erste Zeile (#!/Bin/bash) ignoriert und 'sh' interpret erwartet '(' Zeichen.

+1

... nicht, weil die Bourne-Shell oder die POSIX sh Sprachspezifikation nicht Unterstütze Arrays. – Cyrus