由于我想在R中运行多个具有不同值的模拟,我建议在bash中使用作业数组。 1)我生成了参数组合并将其保存在一个名为parameters.txt的txt文件中。 2)我现在想要将每个参数组合用于R.每个组合由parameters.txt中的3个数字(3个参数)组成。
当我运行脚本时,会出现一条错误消息:
head:parameters.txt:行数无效
head:parameters.txt:行数无效
head:parameters.txt:行数无效
作业数组项:rx =,ry =,rz =
这是我的剧本:
# Sweeping parameters.txt
N=${SLURM_ARRAY_TASK_ID}
rx=`head -n ${N} parameters.txt | tail -n 1 | cut -d' ' -f1`
ry=`head -n ${N} parameters.txt | tail -n 1 | cut -d' ' -f2`
rz=`head -n ${N} parameters.txt | tail -n 1 | cut -d' ' -f3`
# Display
echo "Job array item $N: rx=$rx, ry=$ry, rz=$rz"
echo "---------------------------------"
# Run
R CMD BATCH ex.R $rx $ry $rz
答案 0 :(得分:0)
似乎SLURM_ARRAY_TASK_ID
为None (not set)
,结果N
为None
:
N=${SLURM_ARRAY_TASK_ID}
然后bash将其翻译为
rx=`head -n parameters.txt ...
您可以使用if
语句进行换行,如下所示:
N=${SLURM_ARRAY_TASK_ID}
if [ -n "${N}" ]; then
rx=`head -n ${N} parameters.txt | tail -n 1 | cut -d' ' -f1`
ry=`head -n ${N} parameters.txt | tail -n 1 | cut -d' ' -f2`
rz=`head -n ${N} parameters.txt | tail -n 1 | cut -d' ' -f3`
# Display
echo "Job array item $N: rx=$rx, ry=$ry, rz=$rz"
echo "---------------------------------"
# Run
R CMD BATCH ex.R $rx $ry $rz
else
echo "SLURM_ARRAY_TASK_ID / N is None"
fi