Tôi đang cố gắng lấy giá trị từ một tệp khác và sử dụng nó trong tập lệnh gửi SLURM. Tuy nhiên, tôi nhận được một lỗi rằng giá trị không phải là số, nói cách khác, nó không bị bỏ qua.Sử dụng biến Bash trong kịch bản lệnh sbatch SLURM
Đây là kịch bản:
#!/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
Khi tôi chạy như một kịch bản Bash shell bình thường, nó in ra số lượng procs một cách chính xác và làm cho đúng mpirun
gọi. Do đó lệnh awk
phân tích số lượng procs một cách chính xác và biến bị hủy tham chiếu như mong đợi.
Tuy nhiên, khi tôi gửi này để SLURM sử dụng:
sbatch myScript.sh
tôi nhận được lỗi:
sbatch: error: Invalid numeric value "`$numProcs`" for number of tasks.
bất cứ ai có thể giúp với điều này?
Không sử dụng dấu gạch chéo ngược bên trong tập lệnh. Sử dụng một cái khác như '$ (...)' –