這里有一個坑(至少對於我來說):
報錯信息中的出錯行,並不代表真實腳本中的出錯行.
jenkins執行的shell內容如下:
第1行echo 1個字符串,少1個雙隱號
echo "233342
echo "12312" echo "34"
執行jenkins報錯如下:
/usr/local/tomcat/apache-tomcat-8.5.40/temp/jenkins5082891078041588552.sh:行4: 尋找匹配的 `"' 是遇到了未預期的文件結束符
Build step '執行 shell' marked build as failure Finished: FAILURE
可以看到錯信息顯示的是行4,但是並沒有行4.我是這樣理解的,jenkins(bash)發現 第1行缺少雙隱號之后,一直尋找到了shell腳本末尾,也沒有找到匹配的雙隱號,所以這里的行4,指的是,我已經找到文件末尾了,都沒有匹配到雙隱號,你這個腳本是有問題的,你自己去找到底是哪一行雙隱號少了吧.
按照我以前調試python程序的經驗,編譯器執行出一段代碼,代碼出現語法錯誤時,編譯器會拋出具體位置.(大部分情況下)
但是顯示這個經驗不適用於調試shelle腳本.
所以下次執行shell遇到這個問題,就仔仔細細去檢查有雙隱號的代碼吧