尝试在linux上运行shell脚本时"无法执行二进制文件"

R B*_*Bud 7 linux bash shell

我是linux和shell脚本编程的新手.我试图使用以下命令从Linux上的安全shell(ssh)运行一个shellcript:

chmod +x path/to/mynewshell.sh

sh path/to/mynewshell.sh
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

path/to/mynewshell.sh: path/to/mynewshell.sh: cannot execute binary file.
Run Code Online (Sandbox Code Playgroud)

尝试使用此命令:

bash path/to/mynewshell.sh
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误.

试过这个命令:su - myusername sh path/to/mynewshell.sh 它要求我的密码并给我这个错误:no such file or directory.

1. cat -v path/to/mynewshell.sh的结果是:^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ Rscript"$ dir"/diver_script.R done

2.当我尝试'less path/to/mynewshell.sh'时,我在终端上得到了这个:

#!/bin/bash/Rscript^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
for dir in /path/to/* ; do 
^@^@^@^@^@^@^@^@Rscript "$dir"/myRscript.R
done
Run Code Online (Sandbox Code Playgroud)

3.当我运行文件路径/到/ mynewshell.sh时:我得到了这个"Bourne-Again shell脚本文本可执行文件"

请提供有关如何尝试执行shellscript的任何建议.

Jah*_*hid 10

chmod -x从文件中删除执行权限.做这个:

chmod +x path/to/mynewshell.sh
Run Code Online (Sandbox Code Playgroud)

并运行它

/path/to/mynewshell.sh
Run Code Online (Sandbox Code Playgroud)

正如错误报告所说,你的脚本实际上不是一个脚本,它是一个二进制文件.

  • 是的,但是在使用`sh`调用脚本时不需要可执行位,所以这不应该是问题. (3认同)