微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐