我被要求在实习期间修改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
答案 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'`
}