別のファイルから値を取得し、これを 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 シェル スクリプトとして実行すると、proc の数が正しく出力され、正しいmpirun
呼び出しが行われます。したがって、awk
コマンドは proc の数を正しく解析し、変数は期待どおりに逆参照されます。
ただし、これを SLURM に送信すると、次のようになります。
sbatch myScript.sh
エラーが発生します:
sbatch: error: Invalid numeric value "`$numProcs`" for number of tasks.
誰でもこれを手伝ってもらえますか?