2011-06-24 52 views
29

我試圖編譯NIST生物識別圖像軟件,而且我一直有麻煩。我終於得到了源簽出正確的,我沒有問題,安裝了Cygwin(我已經在過去使用它),但是當我去編譯,我得到這個錯誤:

$ sh setup.sh </cygdrive/c/NBIS> [--without-X11] 
setup.sh: line 94: syntax error near unexpected token `$'in\r'' 
'etup.sh: line 94: ` case $1 in 

現在我敢肯定任何高級編碼器都會前往setup.sh並尋找問題,但我不是一個真正的編碼器(我只編譯它,因爲沒有預編譯的軟件包),所以我不知道該怎麼做。我沒有使用cygwin安裝任何庫,我只是將所有內容都保留爲默認值。我試圖遵循NBIS手冊,但我並不是很瞭解這一點,所以我正在苦苦掙扎。 Maybye看看它可能會發現我錯過的東西:http://www.nist.gov/customcf/get_pdf.cfm?pub_id=51097

回答

7

Windows使用兩個字符(CR和LF或\r\n)標記文本文件中一行的結尾。 Unix,Linux和(默認情況下)Cygwin使用單個LF或'\ n'字符。一些Cygwin工具能夠處理任何一種格式,但sh通常不能。

它看起來像setup.sh使用Windows風格的行結尾 - 或至少行94。

我沒有找到源代碼的下載,但是如果它們是作爲zip文件分發的,則可能需要使用帶有-a選項的Cygwin unzip命令來提取它們,以便自動轉換任何行結束符。

但我懷疑還有比這更多的東西。分佈式文件setup.sh首先不應該有任何Windows風格的行結尾,如果是這樣,我不知道爲什麼問題不會顯示直到94行。

如果您可以發佈源代碼下載的URL,我會看看setup.exe

40

要轉換到setup.sh在Cygwin Unix行結尾,使用

dos2unix setup.sh 
9

簡單的方法來example.sh文件轉換爲UNIX是使用記事本++(編輯> EOL轉換> UNIX/OSX格式)

您還可以設置在記事本默認EOL ++(設置>首選項>新建文檔/默認目錄>選擇格式框下的Unix/OSX)

18

運行

sed -i 's/\r//' setup.sh

修復您的行結尾

相關問題