Bash 脚本中没有这样的文件或目录

Bash 脚本中没有这样的文件或目录,bash,file,permissions,Bash,File,Permissions,我对剧本有一些奇怪的问题。行exec$*哪个进程myfile作为参数 if [ $# -gt 0 ] then case $1 in -*) ;; *) exec $* ;; esac fi 抛出错误myfile:没有这样的文件或目录 确保该文件存在。我尝试sudo,我检查了烫发,我将所有者设置为root,但我一直有这个消息 试试看 exec "$@" 而不是 exec $* 正确地转义参数中的空格 例子 错误地输出c,以及 bash -c "bash -c '

我对剧本有一些奇怪的问题。行
exec$*
哪个进程
myfile
作为参数

if [ $# -gt 0 ]
then
   case $1 in
   -*) ;;
    *) exec $* ;;
   esac
fi 
抛出错误
myfile:没有这样的文件或目录

确保该文件存在。我尝试sudo,我检查了烫发,我将所有者设置为
root
,但我一直有这个消息

试试看

exec "$@"
而不是

exec $*
正确地转义参数中的空格

例子 错误地输出
c
,以及

bash -c "bash -c 'echo \$1' \"\$@\"" a b "c d" e f
正确输出
cd

尝试

exec "$@"
而不是

exec $*
正确地转义参数中的空格

例子 错误地输出
c
,以及

bash -c "bash -c 'echo \$1' \"\$@\"" a b "c d" e f

正确的输出
cd

可能是
myfile
在64位机器上时是32位体系结构的二进制可执行文件。尝试使用
file myfile
uname-a
。是的,我知道,如果这是对的,消息很奇怪。你如何运行脚本?我想你只是在传递我的文件?它在你的道路上吗?否则,您需要指定路径。如果它在同一个目录中,请使用
/myfile
应该注意的是,
sudo
一些您不完全理解的东西不是一个好主意,特别是如果它根本没有按预期工作。@RenaudPacalet当我调用
file myfile
时,我得到
ELF 32位LSB可执行文件,英特尔80386,版本1(SYSV),动态链接(使用共享库),对于GNU/Linux 2.6.18,BuildID[sha1]=0xc3ddbfd3a4e54b34d0cc0ca2e56880dcdfdd719b,未剥离
uname-a
抛出
Linux元映射-m3.16.0-0.bpo.4-amd64#1 SMP Debian 3.16.7-ckt11-1+deb8u3~bpo70+1(2015-08-08)GNU/Linux
我该如何处理?因为我正在远程机器上尝试这个代码。同样的代码在我的本地
OSX
@Newben中运行得很好:所以,我是对的,您尝试在64位机器上运行32位二进制文件。它可以与本地OSX一起运行,因为本地OSX是32位的,或者安装了32位库。。。在64位远程计算机上安装32位库,使其也可以运行32位二进制文件,或者为64位目标重新编译应用程序。可能是
myfile
是32位体系结构的二进制可执行文件,而您在64位机器上。尝试使用
file myfile
uname-a
。是的,我知道,如果这是对的,消息很奇怪。你如何运行脚本?我想你只是在传递我的文件?它在你的道路上吗?否则,您需要指定路径。如果它在同一个目录中,请使用
/myfile
应该注意的是,
sudo
一些您不完全理解的东西不是一个好主意,特别是如果它根本没有按预期工作。@RenaudPacalet当我调用
file myfile
时,我得到
ELF 32位LSB可执行文件,英特尔80386,版本1(SYSV),动态链接(使用共享库),对于GNU/Linux 2.6.18,BuildID[sha1]=0xc3ddbfd3a4e54b34d0cc0ca2e56880dcdfdd719b,未剥离
uname-a
抛出
Linux元映射-m3.16.0-0.bpo.4-amd64#1 SMP Debian 3.16.7-ckt11-1+deb8u3~bpo70+1(2015-08-08)GNU/Linux
我该如何处理?因为我正在远程机器上尝试这个代码。同样的代码在我的本地
OSX
@Newben中运行得很好:所以,我是对的,您尝试在64位机器上运行32位二进制文件。它可以与本地OSX一起运行,因为本地OSX是32位的,或者安装了32位库。。。在64位远程设备上安装32位库,使其也可以运行32位二进制文件,或者为64位目标重新编译应用程序。