Bash 如何在shell脚本中运行可执行文件?

Bash 如何在shell脚本中运行可执行文件?,bash,shell,Bash,Shell,我有文件夹“destination/”,在目标文件夹中,它包含可执行的grade1。我的当前目录是“destination/” 我想跑 for i in FILES/*; do ./grade1 $i done 上面写着 ./grade1 no such file or directory 奇怪的是,当我将代码复制到命令行并运行它时,它工作得很好。只有当我在shell脚本中执行此操作时,问题才会出现。解决此问题的一个简单方法可能是开始使用grade1可执行文件的完整路径 for i in F

我有文件夹“destination/”,在目标文件夹中,它包含可执行的grade1。我的当前目录是“destination/”

我想跑

for i in FILES/*; do ./grade1 $i done
上面写着

./grade1 no such file or directory

奇怪的是,当我将代码复制到命令行并运行它时,它工作得很好。只有当我在shell脚本中执行此操作时,问题才会出现。解决此问题的一个简单方法可能是开始使用grade1可执行文件的完整路径

for i in FILES/*; do {FULL_PATH}/grade1 $i done

我不认为像你所说的那样,1级真的在你当前的工作目录中。我建议您验证这一点,并检查可执行文件的权限。将代码扩展到

echo current directory is $PWD
ls -l grade1
for i in FILES/*; do ./grade1 $i done

这将揭示问题的根源。

脚本是如何运行的?特别是,脚本运行的工作目录是什么?请尝试在脚本中提及完整路径,如/path/to/FILES/*中的
for i;do/path/to/grade1$i;完成
您可以在foreach循环中调用
pwd
命令来知道您在哪里。完成./grade1应该可以工作。您的目录必须不正确或权限错误。正常工作的目录是每个可执行文件所在的“目标”。最糟糕的是,同一个命令在命令行中工作,但在shell脚本中不工作