linux – 如何将text / plain转换为text / x.shellscript

我将从Windows机器创建的.sh文件发送到linux,以便我可以在那里运行它.问题是我继续得到一个名为bad interpreter的错误.但是当我在linux机器上编写shell脚本时,它运行没有问题,即使它与从windows机器发送的代码具有相同的代码.经过我的调查,我发现windows machine .sh脚本是一个text / plain文件(使用文件-bi),另一个来自linux机器是text / x.shellscript.有没有办法将text / plain转换为text / x.shellscript?谢谢

这是脚本:

#!/bin/bash

date
sudo apt-get update

我通过在仅包含的Linux框中执行另一个.sh文件尝试了一个解决方

#!/bin/bash

然后windows机器只发送一个包含测试命令的文件,如:

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然后再次保存它而不做任何事情.有用

解决方法:

我将在下面总结您需要采取的步骤,以便其他用户可以轻松看到需要做的事情:

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

#!/bin/bash

要么

#!/usr/bin/bash

你可以输入以下内容找到哪个是正确的:

which bash 

在你的Linux机器上.

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

dos2unix yourscript

仅供参考,您可以使用以下方法轻松查看Linux中的奇怪字符,如TAB或换行符或回车符:

cat -vet yourfile

要么

sed -n l yourfile

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

chmod +x yourscript

最后,当您完成所有这些操作后,您需要将脚本所在的目录添加到PATH变量(并将其导出),或者如果您的脚本位于当前目录中,请提供脚本的完整路径:

./yourscript

或者像这样,如果它位于其他地方

/some/directory/some/where/yourscript

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...