解決shell錯誤:syntax error: unexpected end of file

NO IMAGE

很久沒有用bash的shell來編寫shell複雜指令碼了,今天在combo-ew的專案中,在各項測試基本上都通過之後,試圖編寫一個指令碼,用來將tftp伺服器上的驅動、應用程式和配置檔案下載到combo中,並完成相應驅動解除安裝重新安裝和配置檔案的檢測等。

在terminal中執行bash -n install_combo.bsh時,總是跳出這樣一個錯誤:install_combo.bsh: line 28: syntax error: unexpected end of file。

一開始因為檔案有130多行,為了聚焦問題產生的地方,只保留第一個if控制,其他的全都遮蔽掉。

但是問題依然存在:

[email protected]:/tftpboot$ bash -x install_combo.bsh
‘ App=’combo calibrate
‘ drivers=’att7053.ko led.ko key.ko relay1218.ko
persistence=$’combo.ini\r’
tmpDir=$’/tmp/combo-tmp\r’
install_combo.bsh: line 28: syntax error: unexpected end of file

“\r”是windows下的用的回車符,不應該在本人所用的ubuntu機器上出現。

除錯所用環境為:

主機系統:ubuntu 11.10,編輯器vim73

目標板系統:AT91SAM9260上安裝了Linux version 2.6.24.3

經google,發現問題可能是因為檔案格式不是unix格式造成的。

在gvim中檢視當前set配置,果然發現這樣一項fileformat=dos,通過:set fileformat=unix並儲存檔案,重新執行

bash -x install_combo.bsh

錯誤消失,問題解決了。

想了一下,錯誤的根源在於,指令碼檔案是從附件中下載的,而附件中的檔案是在windows系統中編寫完成的。

所以,寫指令碼還是在linux環境下用vi或者vim來寫,比較省事。