在for循环中从另一个运行bash脚本

问题描述 投票:0回答:1

我试图从另一个名为grid.sh的运行一个名为run.sh的bash脚本。它以这种形式工作:

#!/bin/bash
./run.sh

但是,当我把它放在for循环中时,它失败并出现错误:“没有这样的文件或目录”:

for i in {1..50}
do
  ./run.sh 50000 $i
done

部分错误输出是:

./grid.sh: line 7: /GlobalStorage/ClusterUsersStorage/aibrahim/qcdgrid_Head/run.sh 50000 1: No such file or directory
./grid.sh: line 7: /GlobalStorage/ClusterUsersStorage/aibrahim/qcdgrid_Head/run.sh 50000 2: No such file or directory
./grid.sh: line 7: /GlobalStorage/ClusterUsersStorage/aibrahim/qcdgrid_Head/run.sh 50000 3: No such file or directory
./grid.sh: line 7: /GlobalStorage/ClusterUsersStorage/aibrahim/qcdgrid_Head/run.sh 50000 4: No such file or directory
./grid.sh: line 7: /GlobalStorage/ClusterUsersStorage/aibrahim/qcdgrid_Head/run.sh 50000 5: No such file or directory

我不知道如何解决这个问题。感谢帮助。

bash
1个回答
-1
投票

run.sh的完整路径名分配给如下变量:

run=/home/amin/run.sh   # or wherever it is...

然后在循环内:

    ${run} 50000 $i

如果仍然出现错误“没有这样的文件或目录”,那么可能是一个错字:正确的run=来反映真正的路径名实际上是什么。由于对run.sh的真实路径名似乎有些混淆,使用像realpath or readlink -e这样的工具来找到它:

  1. cdrun.sh的目录。
  2. realpath ./run.sh,并注意完整的路径名输出。
  3. 纠正run=使用该输出。
© www.soinside.com 2019 - 2024. All rights reserved.