1. 程式人生 > >ubuntu shell腳本出錯 dash

ubuntu shell腳本出錯 dash

解決 通過 關鍵字 註意 ubuntu下 art () 才會 sdn

今天在Ubuntu下調試代碼,明明是正確的,卻仍然報錯,查了錯誤信息才知道:Ubuntu中默認不是bash,而是為了加快開機速度,使用了dash。

dash中需要嚴格的語法,而且與bash語法不同。例如,bash中定義函數是使用function關鍵字的(function foo() {}),但在dash中沒有該關鍵字,直接使用foo(){}定義。我的錯誤就是這樣因為有了function而沒有通過。

註意:在sh文件首行定義的“#!/bin/bash”,指的是在(文件具有x權限的前提下),shell腳本使用的bash。

我給這個文件加上了執行權限,然後使用./filename.sh和bash filename.sh可以成功執行。只有在使用sh filename.sh下才會出錯。


代碼對於標準bash而言沒有錯,因為Ubuntu為了加快開機速度,用dash代替了傳統的bash,是dash在搗鬼。
解決方法是 取消dash
sudo dpkg-reconfigure dash
在選擇項中選No,即可。

參考

https://blog.csdn.net/arthur503/article/details/38308961

ubuntu shell腳本出錯 dash