Shell腳本執行報錯:Syntax error: "(" unexpected


先說解決方案:

執行命令:

ln -fs /bin/bash /bin/sh  # 將/bin/sh重新指向/bin/bash

  

 

 

問題描述


三消項目啟動前需要進行一系列的編譯、orm中間件生成等操作,都是通過shell腳本執行的,但是在一次制作tars-node鏡像時,shell腳本出現了錯誤信息:

 

 

原因分析


可以確認的是腳本並沒有改動過,之前一直運行正常。

查看報錯對應的代碼位置:

可以看到是第三行的一個map變量符號被指無法識別。

從報錯來分析,應該是shell腳本不支持map,但是我們的腳本是用bin/sh開頭的,正常情況應該是可以支持的。

懷疑是/bin/sh被指向了其他解釋器,

直接找到/bin/sh位置,進行查看:

看到/bin/sh被指向了dash解釋器,問題找到了,dash解釋器不支持map。

一般linux機器都是默認使用/bin/bash或者/bin/sh作為shell腳本解釋器的,沒想到tars-node官方基礎鏡像使用的是dash,導致問題出現。

 

 

 

解決方案


將/bin/sh重新指向/bin/bash:

ln -fs /bin/bash /bin/sh

 

查看結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM