Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将text/plain转换为text/x.shell脚本_Linux_Windows_Shell_Encoding_Scripting - Fatal编程技术网

Linux 如何将text/plain转换为text/x.shell脚本

Linux 如何将text/plain转换为text/x.shell脚本,linux,windows,shell,encoding,scripting,Linux,Windows,Shell,Encoding,Scripting,我正在将一个从windows计算机创建的.sh文件发送到linux,以便在那里运行它。问题是,我不断收到一个错误,称为bad解释器。但是,当我在linux机器上编写shell脚本时,它运行时没有问题,即使它的代码与从windows机器发送的代码相同。在我的调查之后,我发现windows machine.sh脚本是一个text/plain文件(使用file-bi),而linux机器上的另一个脚本是text/x.shell脚本。有没有办法将text/plain转换为text/x.shell脚本?多谢

我正在将一个从windows计算机创建的.sh文件发送到linux,以便在那里运行它。问题是,我不断收到一个错误,称为bad解释器。但是,当我在linux机器上编写shell脚本时,它运行时没有问题,即使它的代码与从windows机器发送的代码相同。在我的调查之后,我发现windows machine.sh脚本是一个text/plain文件(使用file-bi),而linux机器上的另一个脚本是text/x.shell脚本。有没有办法将text/plain转换为text/x.shell脚本?多谢各位

以下是脚本:

#!/bin/bash

date
sudo apt-get update
我尝试了一个解决方案,在一个只包含

#!/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

您可以通过键入以下内容找到正确的选项:

which bash 
在你的Linux机器上

第二,您需要确保在Linux框运行脚本之前,删除行末尾的任何Windows回车符(或“^M”)。您可以通过以下方式执行此操作:

dos2unix yourscript
仅供参考,在Linux中,您可以通过以下方式轻松看到奇怪的字符,如制表符、换行符或回车符:

cat -vet yourfile

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

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

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

/some/directory/some/where/yourscript

我怀疑第一行到你的外壳的路径是错误的。给我们看剧本怎么样?我说的是“请给我们看剧本”,而不是“剧本是在哪里制作的?”…@MarkSetchell对于那个误会很抱歉。我用sript编辑了我的文章。请在脚本的每一行的开头加上4个空格,这样它的格式就正确了。第一行可能是“#!/bin/bash”或“#!/usr/bin/bash”
./yourscript
/some/directory/some/where/yourscript