10

我使用 EditPlus 编写 linux bash 程序。在我将文件移动到服务器时写入后,出现以下错误:

sleep: invalid time interval `2\r'
Try `sleep --help' for more information.

/usr/bin/program: line 9: $'\r': command not found
/usr/bin/program: line 10: $'}\r': command not found
/usr/bin/program: line 11: $'\r': command not found
/usr/bin/program: line 12: syntax error near unexpected token `$'{\r''
'usr/bin/program: line 12: `stop() {

我也使用 dos2unix 解决了这个问题,但没有成功。我想知道有什么办法可以避免这种问题。它浪费了很多时间。有没有更好的编辑器或某种方法来解决这个问题?

编辑:

我解决这个问题的方法是我在 linux 中 vi 一个文件,然后从 windows 文件逐行复制到 linux 文件,然后它就可以工作了。这些是我的代码行:

line7:udevadm control --reload-rules sleep 2 echo echo $(date +"%b %e %T") hostnameProgram[$$]: Program Started | tee -a /var/log/messages echo } stop() {

4

3 回答 3

10

您需要更改文件首选项:转到 Preferences -> Files 并将“Create new file as”更改为 UNIX。此外,您可能希望启用“检查无效 CR/LF,加载时为空字符”选项。

于 2012-05-04T18:44:06.347 回答
4

对于已经生成的文件

cat OLDFILE | tr -d '\r' > NEWFILE 

应该有帮助。您不能只将输出重定向到输入:

cat FILE | tr -d '\r' > FILE 

因为这将在读取之前截断输入文件。

与类似程序相比,这不符合无用使用猫奖的条件,因为tr不接受文件名作为参数。

于 2012-05-04T18:57:33.573 回答
3

在 CRLF 到 LF 的 VSCode / atom 中设置“行结束序列”并保存对我有用

于 2019-09-10T18:16:03.600 回答