我们正在使用 Windows 机器,代码部署在 linux 中。
在开发一些 linux 脚本时,我们有一些 ctrl-m 字符。版本提供给客户。
对 shell 脚本中的 ctrl-m 字符有什么影响。
努斯
我们正在使用 Windows 机器,代码部署在 linux 中。
在开发一些 linux 脚本时,我们有一些 ctrl-m 字符。版本提供给客户。
对 shell 脚本中的 ctrl-m 字符有什么影响。
努斯
在 vi 编辑器中打开文件
按转义键并在文件的命令行中键入以下内容。
:%s/^M//g
确保通过按 Cntrl 键 + V + M 添加 ^M 然后按 Enter
它将删除字符,您可以保存文件。
It will change the shebang line, so that the interpreter isn't found.
$ ./t.sh
bash: ./t.sh: /bin/bash^M: bad interpreter: No such file or directory
^M
字符是回车符。CR
Windows 和 DOS 以(^M
或 ASCII 代码 13) 后跟LF
(^J
或换行符,ASCII 代码 10)来终止文本行。Linux 使用 just LF
,因此回车符作为文本的一部分出现并被解释为这样。这意味着他们会破坏脚本。
大多数 linux 发行版都预装了一个名为dos2unix的实用程序。您可以使用它将行尾字符从 DOS 样式转换为 linux 样式。
有些编辑器会自动为您进行转换;其他人有让您指定使用哪种模式的选项。
您也可以使用以下语法。由于在 Windows 中,此 Control+v+m 不起作用,您可以使用 \r 代替。
使用带有 -b 选项的 vim 编辑器以二进制模式打开文件以查看 Control-M 字符并使用以下命令替换 Control-M 字符
%s@\r@@g