意外的文件结束

时间:2010-09-07 02:22:37

标签: linux unix

我被要求在实习期间修改bash脚本,因为昨天是我第一次开始阅读Bash语法,我很难搞清楚“语法错误:意外结束文件”错误。我想知道是否有人能够帮助我。

脚本的最后一部分是:

    echo "  " >>${MAILLOG}

    echo "Building CSAPI SDK" >>${MAILLOG}
        cd ${BuildsDIR}
        make sdk
    # Wait 3 minutes for the HDXs to reboot and SDK build to complete
    echo "Waiting for the HDXs to reboot and SDK build to complete..." >>${MAILLOG}
        sleep 180
    echo "Running PyUnit tests" >>${MAILLOG}
        cd Common/csapi/pyunit
        make test >>${TESTLOG} 2>&1

    TestReportLink=`mklink ${BUILDURL}/${1}/build/Common/csapi/pyunit/report.xml`
    TestLogLink=`mklink ${BUILDURL}/${1}/build/${1}.test.log`

    echo "Test report: ${TestReportLink}" >>${MAILLOG} 
    echo "Test log: ${TestLogLink}"  >>${MAILLOG} 
    # Wait 3 minutes for the tests to complete
        sleep 180

2 个答案:

答案 0 :(得分:4)

关于该脚本的第129行,显示:

    EOFBUILDFAILUREMSG

从该行中删除前导空格,您的错误消息就会消失。

这是here文档的结尾分隔符。如果将行123更改为将重定向运算符设置为<<-并且空格仅由制表符(无空格)组成,则可以保留在前导空格中:

    cat <<-EOFBUILDFAILUREMSG >>${MAILLOG}

答案 1 :(得分:0)

https://superuser.com/q/184861/48480中所述,mklink()将“/”替换为“\”。例如${BUILDURL}/${1}/build/${1}.test.log取代了ausdatos01\\development\\mrahman\\projects\\builds\\autobuilder\\<source directory>\\build\\<source directory>.test.log。由于您标记了与* NIX相关的问题,因此该路径可能不存在。乍一看,它看起来像脚本被编写为在Windows主机上工作(例如在cygwin中......)。

如果您将mklink更改为

,会发生什么
mklink () {
#    node="\\\\$1"
#    echo $node`echo $2|sed 's/\//\\\\/g'`
}