如何使用另一个带循环的作业提交连续的 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}
我必须阶段(使用 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}