我是linux和shell脚本编程的新手。 我试图使用以下命令从linux上的安全shell(ssh)运行一个shellcript:
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
。
1. cat -v path / to / 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.当我运行文件路径/ / mynewshell.sh时:我得到了“Bourne-Again shell脚本文本可执行文件”
请提供有关如何尝试执行shellscript的任何建议。
答案 0 :(得分:10)
CoreData
从文件中删除执行权限。这样做:
CoreData
用
运行它chmod -x
正如错误报告所说,你的脚本实际上不是一个脚本,它是一个二进制文件。
答案 1 :(得分:1)
我在PowerShell中通过bash解释器运行我的shell脚本时遇到了同样的错误。我在shell脚本上运行dos2unix myscript.sh
,现在运行正常。
答案 2 :(得分:0)
run_me.sh.xz: run_me.sh.xz: cannot execute binary file
这是因为文件已压缩,如.xz
扩展名所示。您需要在使用文件之前删除压缩。
xz -d ./run_me.sh.xz
chmod +x ./run_me.sh # probably not necessary if you already did that before
./run_me.sh
其他压缩方案(如gzip
(.gz
扩展名),bzip2
(.bz2
扩展名)等行为相似;你只需要知道解压缩它的命令的名称,这当然通常很容易谷歌。
答案 3 :(得分:0)
我遇到的其他任何人。
我试图运行一个转换为shell脚本的16位unicode文本文件,但这不起作用,因为所有16位unicode文本文件在开始时都带有一个0xFFFE标记,使mac os与该文件不一样,这给了“无法执行二进制文件”错误。
打开文本文件,单击顶部的“格式”,然后单击“生成纯文本”。
打开您的终端类型chmod 777 /path/to/file.sh
放入终端/path/to/file.sh
来运行它
答案 4 :(得分:0)
该脚本根本不是shell脚本。 Shell脚本通常是可读的,并且包含Shell代码。 cat命令显示的输出确实看起来像是某种二进制文件。 需要注意的是,这可能是由于复制时存在文件转换问题,但对我来说,它看起来更像是实际的二进制文件。
您可以使用file命令检查它被标识为什么,
file path/to/mynewshell.sh
只是从一个干净的脚本开始并重写代码,看起来您只是想在目录中运行一些R脚本?
确保R脚本指向正确的R脚本执行程序。