2013-03-24 31 views
2

我是shell腳本編程新手。我正在嘗試編寫一個腳本,它引發了一個意外的文件錯誤結束。我有檢查其他解決方案在stackoverflow,但我coul不解決這裏。任何幫助,將不勝感激。我的劇本是Linux腳本文件錯誤意外結束

if [ "$(/etc/init.d/tomcat7 status)" == " * Tomcat servlet engine is not running." ]; then /etc/init.d/tomcat7 start; fi 

至於建議我試着在Linux中創建這個,現在我得到一個錯誤[:* Tomcat servlet引擎沒有運行:意外操作

+3

你在創建這個腳本Linux系統還是你在Windows上創建它,然後傳輸文件? – Joni 2013-03-24 11:24:15

+0

這看起來很正常。你確定這是你的腳本嗎? – 2013-03-24 11:24:47

+0

是的,這是所有的腳本。然而,正如Joni所說,我在Windows上創建了它,然後將其轉移到了Linux。 – 2013-03-24 11:28:56

回答

2

由於您在Windows上創建了該文件,原來的問題很可能是由於換行符不匹配造成的。 Windows將換行符編碼爲CR-LF,而Linux/Unix只使用LF和Mac OS。你可以用例如

#!/bin/bash 

你的腳本應該看起來可能有點像這樣:

recode ibmpc..latin1 your.sh 

你也應該在腳本的第一行指定解釋

#!/bin/bash 
if [ "$(/etc/init.d/tomcat7 status)" == " * Tomcat servlet engine is not running." ]; then 
    /etc/init.d/tomcat7 start 
fi 
2

當你在windows上編寫腳本時,最可能的問題是在Linux上只有一個\ n在Windows上對行結束符\ r \ n進行不同的編碼。

嘗試在腳本上使用dos2unix並再次運行它。