我正在尝试从另一个文件中获取一个值并在 SLURM 提交脚本中使用它。但是,我收到一个错误,即该值是非数字的,换句话说,它没有被取消引用。
这是脚本:
#!/bin/bash
# This reads out the number of procs based on the decomposeParDict
numProcs=`awk '/numberOfSubdomains/ {print $2}' ./meshModel/decomposeParDict`
echo "NumProcs = $numProcs"
#SBATCH --job-name=SnappyHexMesh
#SBATCH --output=./logs/SnappyHexMesh.log
#
#SBATCH --ntasks=`$numProcs`
#SBATCH --time=240:00
#SBATCH --mem-per-cpu=4000
#First run blockMesh
blockMesh
#Now decompose the mesh
decomposePar
#Now run snappy in parallel
mpirun -np $numProcs snappyHexMesh -parallel -overwrite
当我将其作为普通的 Bash shell 脚本运行时,它会正确打印出 procs 的数量并进行正确的mpirun
调用。因此,该awk
命令正确解析出 procs 的数量,并按预期取消引用变量。
但是,当我使用以下方法将其提交给 SLURM 时:
sbatch myScript.sh
我得到错误:
sbatch: error: Invalid numeric value "`$numProcs`" for number of tasks.
有人能帮忙吗?