【问题标题】:Read from a file in linux从linux中的文件读取
【发布时间】:2014-11-25 09:31:32
【问题描述】:

我一直在尝试不同的解决方案来读取 linux 中的文件,但一点运气都没有。我的主要目的是从应用程序获取 http 响应并将其存储在文件中。

这是我在 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&gt;&amp;1 | grep "200 OK" 印刷 HTTP/1.1 200 OK

我还注意到,当我尝试查看文件内容并输入 vi out.txt 时,内容是空的,但是当我输入 vi out.txt^M 时,内容就在那里。

请帮助我解释为什么执行 shell 文件会出现这样的错误以及为什么我的文件名末尾有 ^M

【问题讨论】:

  • 脚本中有 MSWin 行尾。使用dos2unixfromdos 删除它们。
  • 哪一个是MSWin行尾,这个“;”?

标签: linux shell


【解决方案1】:

听起来您的脚本文件中包含 windows 换行符。您可以使用shell程序dos2unix对其进行转换或搜索和替换,这个答案有更多细节。

^M at the end of every line in vim

更新: 由于您在 Windows 中使用 notepad++,您还可以通过 Edit -&gt; EOL Conversion 选择行尾字符(请参阅 Choose newline character in Notepad++)。完成此操作后,您不必每次复制文件时都转换文件。

【讨论】:

  • 是的,实际上我是在 windows 中编写脚本,然后在 linux 中执行它。我会先尝试转换它
  • 太棒了!另外,您在 windows 中使用的是什么编辑器?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2014-06-28
  • 1970-01-01
  • 2018-07-17
  • 2011-05-27
  • 1970-01-01
相关资源
最近更新 更多