2015-10-09 4 views
0

У меня есть скрипт, который зависит от трех переменных. таких как:файлы, содержащие переменные shell-скрипт

#!/bin/bash 
/home/sugi/Desktop/rtg-tools-3.5.1/rtg vcfeval -b $1 -c $2 -t /home/sugi/Desktop/hg19.sdf --sample $3 -f AVR -o /home/sugi/Desktop/eval_{$3} 
exit 

Я хочу выполнить этот скрипт в списке образцов. для этого у меня есть 3 файла, содержащие расположение образцов и имена образцов. для каждой записи файлов должна выполняться приведенная выше команда. каждый из файлов имеет одинаковое количество записей в строке.

Для этого я попытался это:

cat file1.txt file2.txt file3.txt | xargs -i myscript.sh {} {} {} 

однако это не работает. и я попытался несколько потоков также на StackOverflow, такие как «xargs с несколькими аргументами. Цените любую помощь. Thx.

+0

вы хотите, чтобы петли по линиям в 3-х файлов параллельно – melpomene

+0

использования 'paste' -.? http://stackoverflow.com/questions/4011814/how-to-interleave-lines-from-two-text-files –

+1

@sugsiv То, что у вас есть, завершает каждую запись файлов. Я не понимаю, о чем вы просите. – melpomene

ответ

0

Комбинируя пасту и xargs:

paste file[1-3].txt | xargs -n3 myscript.sh 
0

Если три переменные будут поступать из трех отдельных файлов это должно сделать

while read a b c; do ..your_script_here.. done < <(paste file1 file2 file3) 

относятся переменные, как $ а, $ Ь, $ C в организме

+0

Спасибо, karafka! – ingo