2017年9月15日 星期五

分別在兩台Ubuntu電腦執行同一支shell script,有一台卻發生 Syntax error: "(" unexpected

今天在移植整個編譯Code的環境,當整個環境都移植完成後,準備試著編譯一次相同的Code,結果遇到Shell Script的error訊息,因此朝著新電腦的環境還尋找問題,錯誤大概描述如下

Shell script內容:
===============================================
#!/bin/sh
AAA=(a b c)
for i in ${AAA[@]}; do
        echo $i
done

錯誤訊息為:
line 2,   
Syntax error: "(" unexpected





這種宣告陣列變數的寫法,並不是在所有的shell底下都通用
所以一開始我先用底下指令確認安裝的shell種類,與版本
# echo $SHELL
# echo $BASH_VERSION

結果發現兩台電腦是相同的


後來查資料原來ubuntu預設的shell是使用dash而非bash,用以下指令查看了一下出現錯誤的電腦:
# ls -al /bin/sh




果然是使用dash所造成的

最後解決方法,就是手動更改/bin/sh,把他改為link到bash就可以了









沒有留言:

張貼留言