Como passar a variável no script paralelo do arquivo de texto linha por linha

0

Eu preciso ler um arquivo linha por linha e passar a string como uma variável para um script ser executado em paralelo.

ex:

14
43
57

está em foo.txt

se eu var = $ (cat foo.txt), então eu posso usar este $ var para dentro de um script, mas como chamar paralelo para alterar essa variável para cada instância executando o script?

    
por pl3bs 18.05.2015 / 08:53

2 respostas

1

você pode usar xargs .

por exemplo: a entrada - input.txt

1
2
3
4

O comando para executar command.sh

#/bin/bash
echo  $1: start
date
sleep 2s
echo  $1 : stop
date 

Correndo todos juntos em paralelo:

➜  /tmp  cat input.txt| xargs -n 1 -P 4 ./command.sh
1: start
3: start
2: start
4: start
Tue May 19 19:03:30 IDT 2015
Tue May 19 19:03:30 IDT 2015
Tue May 19 19:03:30 IDT 2015
Tue May 19 19:03:30 IDT 2015
1 : stop
4 : stop
3 : stop
2 : stop
Tue May 19 19:03:32 IDT 2015
Tue May 19 19:03:32 IDT 2015
Tue May 19 19:03:32 IDT 2015
Tue May 19 19:03:32 IDT 2015
    
por 19.05.2015 / 18:04
1

Você também pode usar o GNU Parallel com o sinalizador -a, que lê de um arquivo.

parallel -a foo.txt echo
14
43
57

Não é o exemplo mais elegante, mas apenas executará o mesmo comando contra todos os argumentos (linha por linha) no arquivo de texto. Inclua o sinalizador -j para especificar quantos processos serão executados em paralelo.

    
por 22.07.2016 / 20:34

Tags