2014-11-25 60 views
0

我一直在嘗試不同的解決方案,從Linux中的文件讀取,沒有運氣。我的主要目的是從應用程序獲取http響應並將其存儲在文件中。從linux中的文件讀取

這是我在shell腳本文件

wget localhost:8080/abc/rest/eventservice/event -O /dev/null -S --quiet 2>&1 | grep "200 OK" > out.txt 
while read -r LINE || [[ -n $LINE ]]; 
do   
    echo "$LINE"; 
done < out.txt 

代碼後,我執行了上述SH文件我得到下面的錯誤

'ervercheck.sh: line 6: syntax error near unexpected token ` 
'ervercheck.sh: line 6: ` done < out.txt 

此行wget localhost:8080/abc/rest/eventservice/event -O /dev/null -S --quiet 2>&1 | grep "200 OK" 打印 HTTP/1.1 200 OK

我也注意到,當我嘗試瀏覽文件內容並鍵入vi out.txt內容是空的,但是當我輸入vi out.txt^M那麼內容就在那裏。

請幫我爲什麼shell文件的執行給出了這樣的錯誤,爲什麼我有^ M我的文件名

+1

腳本中有MSWin行結束符。使用'dos2unix'或'fromdos'來刪除它們。 – choroba 2014-11-25 09:41:27

+0

哪一個是MSWin行結尾,這個「;」? – Deb 2014-11-25 09:42:57

+1

沒有'^ M'字符 – poida 2014-11-25 09:44:51

回答

1

末這聽起來像你的腳本文件具有窗口行新的。你可以使用一個shell程序dos2unix來轉換它或搜索和替換,這個答案有更多的細節。

^M at the end of every line in vim

更新: 因爲你是在Windows中使用記事本+ +,你也可以選擇行字符由去Edit -> EOL Conversion結束(見Choose newline character in Notepad++)。完成此操作後,每次複製文件時都不必轉換文件。

+0

雅,實際上我正在windows中編寫腳本,然後在linux中執行它。我會嘗試先將其轉換爲 – Deb 2014-11-25 09:44:13

+0

Thanx,轉換工作。 – Deb 2014-11-25 09:50:25

+0

優秀!另外,你在Windows中使用的編輯器是什麼? – poida 2014-11-25 09:55:11