2014-11-25 3 views
0

Я пробовал различные решения для чтения из файла в linux, и вам не повезло. Моя основная цель - получить HTTP-ответ от приложения и сохранить его в файле.Чтение из файла в linux

Вот мой код в файле сценария оболочки

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 

После того, как я выполнил вышеуказанный файл ш я получаю ошибку ниже

'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, тогда контент есть.

Пожалуйста, помогите мне, почему выполнение файла оболочки дает такую ​​ошибку и почему я имею^M в конце моего имени файла

+1

У вас есть окончания строки MSWin в вашем скрипте. Используйте 'dos2unix' или' fromdos', чтобы удалить их. – choroba

+0

, который является окончанием MSWin, это «;»? – Deb

+1

no '^ M' char – poida

ответ

1

Это звучит как файл сценария имеет окна новые строки в нем. Вы можете использовать программу оболочки dos2unix для ее преобразования или поиска и замены, этот ответ содержит более подробную информацию.

^M at the end of every line in vim

Update: Поскольку вы используете Notepad ++ в окнах, вы можете также выбрать символ конца строки, перейдя Edit -> EOL Conversion (см Choose newline character in Notepad++). После того, как вы это сделали, вам не придется преобразовывать файл каждый раз, когда вы его копируете.

+0

Я, собственно, я пишу скрипт в окнах, а затем выполняю его в linux. я попытаюсь преобразовать его сначала – Deb

+0

Thanx, преобразование сработало. – Deb

+0

Отлично! Кроме того, какой редактор вы используете в Windows? – poida