1

我将 bash 脚本从PHPover存储到 CentOS 服务器上SSH2;我知道这很复杂,但请耐心等待。

当我打开文件(在服务器上)时:

vi myScript

我懂了:

ls -al^M
free -m

所以,当我尝试执行它时:

bash myScript

输出抛出错误:

ls: invalid option -- 
Try `ls --help' for more information.
         total       used       free     shared    buffers     cached
Mem:           676        642         34          0         33        313
-/+ buffers/cache:        295        380
Swap:          767          1        766

它是什么^M以及它来自哪里的任何想法?bash 脚本应该能够支持换行符和制表符。

谢谢。

4

2 回答 2

5

^M 是来自 Windows 的行尾。该文件最初是在 Windows 中创建的。您可以在 vi 中执行类似 :1,$ s/^v^M//g 的操作来删除它们。

您也可以dos2unix对整个文件使用命令来一次性清理它。您可以在执行脚本之前执行此操作。

于 2012-09-14T04:37:30.320 回答
3

^MCR 或回车符。在某个地方,您的代码被 CRLF 行尾污染了,这在 Windows 机器上很常见。此外,许多互联网协议使用 CRLF 行尾。

要修复,请编辑文件vim并使用:set fileformat=unix;如果您这样做:set:set all在将其更改为 之前unix,您应该看到fileformat=dos。然后保存文件。

CR 在行尾弄乱了反斜杠,因为反斜杠不再位于行尾;它们后面是回车符,它不是换行符。

于 2012-09-14T04:37:58.853 回答