如何使用另一个带循环的作业提交连续的 bash 个作业

How to submit consecutive bash jobs using another job with a loop

我必须阶段(使用 shapeit 软件)29 条染色体,所以如果一个可以发送一个调用另一个的作业,文件的名称是相同的,只是改变染色体编号,那就太好了。 示例 phase.sh

#!/bin/bash
shapeit \
-P chr_1.ped chr_1.map \
--duohmm \
--rho 0.01 \
-O chr_1.phased 

我需要类似其他工作的东西来调用它

#!/bin/bash
for chr 1...29 
sbatch --phase.sh 
done

非常感谢

您的 phase 脚本可以这样更改:

#!/bin/bash
shapeit \
-P .ped .map \
--duohmm \
--rho 0.01 \
-O .phased 

你可以这样调用它:

#!/bin/bash
for chr in $(seq 1 29)
do
phase.sh chr_$chr
done

假设您可以将第一个脚本更改为

#!/bin/bash
shapeit \
  -P "".ped "".map \
  --duohmm \
  --rho 0.01 \
  -O "".phased

并称它为sbatch(或者是phase.sh?),然后你可以用

来称呼它
for chr in {1..29}; do
  sbatch --phase.sh "chr_$chr"
done

当然,更好的设计可能是将第一个脚本更改为 运行 对您传递的参数进行循环;

for chr; do
  shapeit \
    -P "$chr".ped "$chr".map \
    --duohmm \
    --rho 0.01 \
    -O "$chr".phased
done

然后像这样称呼它

thatscript chr_{1..29}