我使用slurm
在HPC上运行以下bash脚本:
#!/bin/bash
#SBATCH --job-name test
#SBATCH --ntasks 10
#SBATCH --time 00-01:00
#SBATCH --output out
#SBATCH --error err
#SBATCH --array=0-9
readarray -t VARS < list_VAR.txt
VAR=${VARS[$SLURM_ARRAY_TASK_ID]}
export VAR
bash data_0_"$VAR".sh
上面的bash脚本向HPC发送10个作业(#SBATCH --array=0-9
)以运行data_0_"$VAR".sh
脚本,其中"$VAR"
是包含在list_VAR.txt
文件中的给定字符串。
让我们假设现在我有第二个list_VAR_2.txt
文件,其中包含从0到3的数字列表,我想将其应用于上面的job-array
和list_VAR.txt
。然后要运行的data_0_"$VAR".sh
脚本将转换为data_"$VAR_2"_"$VAR".sh
。
是否有办法将这个进一步的变量列表list_VAR_2.txt
添加到bash脚本?
感谢#####################
更新list_VAR.txt
aa
bh
wwe
ftq
juu
d
8i
yz5
qq1p
m75
list_VAR_2.txt
0
1
2
3
您可以像对第一个文件那样将list_VAR_2.txt
内容加载到数组中。然后循环数组来构建bash命令。
,
#!/bin/bash
readarray -t VARS < list_VAR.txt
readarray -t VARS_2 < list_VAR_2.txt
for VAR in "${VARS[@]}"
do
for VAR_2 in "${VARS_2[@]}"
do
bash data_"$VAR_2"_"$VAR".sh
done
done
或者通过指定所需数组元素的索引来构建bash命令。
。
bash data_"${VARS[INDEX1]}"_"${VARS_2[INDEX2]}".sh