2016-09-02 4 views
0

Ich versuche, ein Bash-Skript von Ant-Exec-Task auszuführen.Kann Bash-Skript mit Ant-Exec-Task nicht ausführen

<target name="test" unless="${is.windows}"> 
     <chmod file="./abc.sh" perm="a+x"/> 
     <exec dir="./" spawn="false" executable="bash" newenvironment="false"> 
      <arg line="abc.sh ${some-argument}" /> 
     </exec> 
</target> 

Das Bash-Skript hat shebang #!/Bin/bash.

Wenn ich das Ziel ausführen, gibt es mir folgende Ausgabe auf unseren Jenkins-Maschinen, wo Produktionscode erstellt wird. Es funktioniert gut auf meinen lokalen CentOS Maschinen. Die meisten Zeilen sind leer. In Zeile 19 hat es {(geschweifte Klammer zu öffnen) -

[exec] abc.sh: line 2: 
    [exec] : command not foundabc.sh: line 7: 
    [exec] : command not foundabc.sh: line 8: 
    [exec] : command not foundabc.sh: line 12: 
    [exec] : command not foundabc.sh: line 14: 
    [exec] : command not foundabc.sh: line 17: 
    [exec] : command not foundabc.sh: line 19: syntax error near unexpected token `{ 
    [exec] 'abc.sh: line 19: `{ 
    [exec] ' 
    [exec] Result: 2 
+0

Ant scheint Ihnen zu sagen, dass Ihr Shell-Skript Syntaxfehler enthält. Möglicherweise mehrere. Wir können Sie nicht darüber beraten, was mit Ihrem Skript falsch ist, ohne es zu sehen. –

+0

Beachten Sie auch, dass Sie, wenn Sie 'bash' explizit ausführen, um Ihr Skript auszuführen, keine shebang-Zeile benötigen und den Dateimodus nicht benötigen, um (direkte) Ausführung zu erlauben. –

+0

Das Bash-Skript scheint zumindest keine Syntaxfehler zu haben. Vergessen Sie nicht, dass das Skript auf einer der CentOS-Maschinen läuft. Über den Shebang, will nur bestätigen, dass es nicht wehtut wenn es vorhanden ist, richtig, auch wenn ich Bash explizit ausführen werde? – User3518958

Antwort

0

Es stellt sich heraus, dass dos Zeilenende waren das Problem. Wenn Sie die svn eol -Eigenschaft auf "native" setzen, wurde das Problem behoben. Wie bei unserem Jenkins-Server wird der Code für jeden Build ausgecheckt, da die Bash-Skripte in Windows-Zeilenenden bearbeitet werden, die nicht mit CentOS kompatibel sind.