Как отправить подряд bash заданий, используя другое задание с циклом - PullRequest
0 голосов
/ 05 февраля 2020

Мне нужно поэтапно (используя программное обеспечение shapeit) 29 хромосом, так что было бы здорово, если бы кто-то мог отправить работу, которая вызывает другую, имена файлов совпадают, только изменился бы номер хромосомы. Пример фазы. 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

Большое спасибо

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Предполагая, что вы можете изменить первый скрипт на что-то вроде

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

и назвать его sbatch (или это phase.sh?), Вы можете вызвать его с помощью

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

Конечно, лучшим вариантом может быть изменение первого скрипта для запуска al oop над аргументами, которые вы передаете;

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

, а затем вызовите его как

thatscript chr_{1..29}
1 голос
/ 05 февраля 2020

Ваш сценарий phase можно изменить следующим образом:

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

, и вы можете вызвать его следующим образом:

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