我们正在开发Windows机器,代码部署在linux中。
在开发一些Linux脚本时,我们有一些ctrl-m字符。发布是提供给客户。
shell脚本中对ctrl-m字符的影响可能是什么。
NUS
答案 0 :(得分:9)
在vi编辑器中打开文件
按下转义并在文件的命令行中输入以下内容。
:%S / ^ M //克
确保通过按Cntrl键+ V + M添加^ M然后按Enter
它将删除字符,您可以保存文件。
答案 1 :(得分:4)
它将改变shebang行,以便找不到解释器。
$ ./t.sh
bash: ./t.sh: /bin/bash^M: bad interpreter: No such file or directory
答案 2 :(得分:4)
^M
个字符是回车符。 Windows和DOS使用CR
(^M
或ASCII代码13)后跟LF
(^J
或换行符,ASCII代码10)终止文本行。 Linux仅使用LF
,因此回车符显示为文本的一部分,并按此解释。这意味着他们会打破脚本。
大多数Linux发行版都预装了一个名为dos2unix的实用程序。您可以使用它将行尾字符从DOS样式转换为linux样式。
有些编辑会自动为您进行转换;其他人可以选择让您指定使用哪种模式。
答案 3 :(得分:0)
您也可以使用以下语法。因为在Windows中,这个Control + v + m不起作用,你可以使用\ r \ n。
以二进制模式打开文件,使用带-b选项的vim编辑器查看Control-M字符,并使用以下命令替换Control-M字符
%S @ \ r @@克