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

时间:2018-01-03 00:37:26

标签: bash

我正在尝试从另一个名为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

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

1 个答案:

答案 0 :(得分:-1)

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

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

然后在循环内:

    ${run} 50000 $i

如果错误" 没有这样的文件或目录"仍然会发生,可能是一个错字:纠正run=以反映实际的真实路径名。由于似乎对run.sh的真实路径名存在一些疑惑,请使用类似realpath or readlink -e的工具来查找它:

  1. cd到其中包含run.sh的目录。
  2. 执行realpath ./run.sh,并记下完整的路径名输出。
  3. 更正run=以使用该输出。