在 Windows 上编辑的 shell 脚本显示意外错误消息

0 bash windows newlines

我在运行脚本以通过 ssh 连接到远程服务器时遇到了一些问题。如果我只是从命令行 ssh 连接到服务器没有问题,但是当我运行脚本来执行此操作时,我会收到错误消息“名称或服务未知名称”。我已将 IP 地址和主机名添加到 /etc/hosts 中,但没有帮助。

我的脚本很简单:

 #!/bin/bash 
ssh username@hostname
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?显然,我不需要为此编写脚本,但是一旦我开始工作,我将添加要执行的命令。

Val*_*ami 7

该脚本的问题在于,当从另一个系统(如 Windows)复制文件时,它会添加一个换行符\n和一个回车符\r\n。有关换行的更多信息,请参阅维基百科上的换行条目。

为了演示这个问题,我在这里上传了一个简短的片段它解释了如何解决这个问题。

简而言之:使用tr删除那些奇怪的行尾

tr -d \\r <yourscript>newscript && mv newscript yourscript

然后再次运行脚本。

或者按照 artm 的建议。

vim编辑器中,使用

:set ff=unix

fffileformat 的缩写)并通过shift+zz.

  • 您最好在此处以纯文本形式重复该解决方案,外部链接中的答案往往会随着互联网而消失。 (2认同)