如何将文本/纯文本转换为文本/ x.shellscript

我发送一个从Windows机器创build的.sh文件到一个Linux,以便我可以在那里运行它。 问题是,我一直在得到一个错误,称为坏的解释器。但是,当我在linux机器上编写shell脚本时,即使它与从Windows机器发送的代码具有相同的代码,它也不会遇到任何问题。 经过我的指导,我发现windows machine .sh脚本是一个文本/纯文件(使用文件-bi),另一个来自linux机器是一个文本/ x.shellscript。 有没有办法将文本/纯文本转换为文本/ x.shellscript? 谢谢

这是脚本:

#!/bin/bash date sudo apt-get update 

我尝试了一个解决scheme,通过在只包含一个linux盒子中做另一个.sh文件

 #!/bin/bash 

然后,Windows机器只发送一个包含testing命令的文件,如:

 date hostname 

然后我把这个文件从windows的窗口中添加到linux里

 cat windows.sh >> linux.sh 

如果我运行linux.sh,它不起作用。 它说错误如下:

 ./linuxh.sh: line 2 $'date\r':command not found ./linuxh.sh: line 2 $'hostname\r':command not found 

但是,如果我打开Linux.sh,然后再次保存而不做任何事情。 有用

Solutions Collecting From Web of "如何将文本/纯文本转换为文本/ x.shellscript"

我在下面总结你需要采取的步骤,以便其他用户可以轻松地看到需要做什么:

首先,你需要在“#!”之后检查你的脚本是否有正确的解释器路径。 在第一行。 这应该是:

 #!/bin/bash 

要么

 #!/usr/bin/bash 

你可以通过输入以下内容来找到正确的:

 which bash 

在你的Linux机器上。

其次,您需要确保在预计您的Linux机器运行脚本之前,删除行末尾的任何Windows回车(或“^ M”)。 你可以这样做:

 dos2unix yourscript 

仅供参考,您可以通过以下方式在Linux中轻松查看诸如TAB或换行符或回车符之类的奇怪字符:

 cat -vet yourfile 

要么

 sed -nl yourfile 

第三,你需要确保你的脚本可以在Linux上执行,使用如下的chmod:

 chmod +x yourscript 

最后,当你完成了所有这些工作之后,你需要将脚本所在的目录添加到PATH变量中(并将其导出),或者如果你的脚本在当前目录中,就给脚本的完整路径:

 ./yourscript 

或者像这样,如果它位于别的地方

 /some/directory/some/where/yourscript