我对linux和shell脚本编写非常陌生。我正在尝试在linux上使用以下命令从安全shell(ssh)运行shellscript:
chmod +x path/to/mynewshell.sh
sh path/to/mynewshell.sh
我得到这个错误:
path/to/mynewshell.sh: path/to/mynewshell.sh: cannot execute binary file.
已尝试使用此命令:
bash path/to/mynewshell.sh
我得到同样的错误。
已尝试使用此命令:su - myusername sh path/to/mynewshell.sh
它询问我的密码,并显示以下错误:no such file or directory
.
- cat -v路径/到/ www.example.com的结果mynewshell.sh是:^@^@^@^@^@^@^@^@Rscript“$dir”/diver_script.R完成
2.当尝试“less path/to/mynewshell.sh”时,我的终端上出现了以下信息:
# !/bin/bash/Rscript^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
for dir in /path/to/* ; do
^@^@^@^@^@^@^@^@Rscript "$dir"/myRscript.R
done
3.当我运行文件路径/到/ www.example.com时mynewshell.sh:我得到了这个“Bourne-Again shell脚本文本可执行文件”
请给予有关如何尝试执行shellscript的建议。
6条答案
按热度按时间zd287kbt1#
chmod -x
从文件中删除执行权限。请执行以下操作:并运行它
正如错误报告所述,您的脚本实际上不是脚本,而是一个二进制文件。
fivyi3re2#
我在PowerShell中通过bash解释器运行我的shell脚本时遇到了同样的错误。我在shell脚本上运行了
dos2unix myscript.sh
,现在它运行正常。z5btuh9x3#
从proposed duplicate:
这是因为该文件是压缩的,如扩展名
.xz
所示。您需要先删除压缩,然后才能使用该文件。其他压缩方案,如
gzip
(.gz
扩展)、bzip2
(.bz2
扩展)等,表现类似;你只需要知道命令的名称就可以解压缩它,当然这通常很容易谷歌。xa9qqrwz4#
对其他人有我的问题。
我试图运行一个16位的unicode文本文件转换为一个shell脚本,这不工作,因为所有16位的unicode文本文件都有一个0xFFFE标记在开始使mac操作系统不喜欢的文件,这给了“无法执行二进制文件”的错误.
打开文本文件,点击顶部的“格式”,向下到“制作纯文本”,点击它。
打开您的终端键入
chmod 777 /path/to/file.sh
输入终端:
/path/to/file.sh
来运行它f2uvfpb95#
这个脚本并不是shell脚本。shell脚本通常是可读的,并且包含shell代码。cat命令显示的输出看起来确实像是某种二进制文件。正如一些人所说,这可能是因为复制时的文件转换问题,但在我看来它更像是一个实际的二进制文件。
您可以使用file命令检查它被标识为什么,以便:
只要从一个干净的脚本开始并重写代码,看起来你只是想在一个目录中运行一些R脚本?
确保R脚本指向正确的R脚本执行程序。
3npbholx6#
在我的例子中,我有一个bash脚本无法执行。这个文件最初是由
find ... -print0
命令生成的。在脚本中留下一个\0字符,删除这个字符就解决了我的问题。