Supondo que você queira executar dez vezes, esta sintaxe funcionará:
parallel -n0 foo.sh ::: {1..10}
parallelprecisa de uma sequência de entrada de algum comprimento ( ::: {1..10}) E você precisa ignorar o conteúdo da sequência de entrada ( -n0), você só se importa com seu comprimento.
Seu comando original:, parallel foo.shnão contém sequência de entrada para indicar quanto paralelismo você deseja. O aviso enigmático indica que você parallelcomeçará a ouvir o terminal em busca de uma sequência de entrada e que provavelmente não é isso que você deseja.
Aqui está o exemplo do tutorial:
seq 10 | parallel -n0 my_command my_args
Como funciona:
parallelsempre pega uma sequência de entrada de algum lugar. Pode ser uma sequência delimitada por espaço em linha precedida por :::OU uma sequência delimitada por nova linha de um arquivo ou origem semelhante a um arquivo, como um pipe. Neste exemplo, a sequência de entrada é de um tubo.
seq 10 produz uma sequência de dígitos delimitada por nova linha de um a dez.
- A
-n0opção informa ao paralelo para ignorar os valores na sequência de entrada. Tudo o que nos importa é o tamanho da sequência, não o seu conteúdo. Mesmo que os dígitos não sejam usados, o comando ainda será executado dez vezes.
Outro exemplo:
parallel -n0 echo -n 'x' ::: {1..5}
Como funciona:
- A sequência de entrada está embutida.
{1..5} produz uma sequência de dígitos delimitada por espaço de um a cinco.
-n0ignora os valores da sequência (e repetimos a string 'x'sempre.)
- Resultado:
xxxxx
Comparado a:
parallel echo -n ::: {1..5}
Como funciona:
- A sequência de entrada está embutida.
{1..5} produz uma sequência de dígitos delimitada por espaço de um a cinco.
- Cada valor da sequência de entrada é usado como argumento para
echo. Pedido não garantido.
- Saída:
43215. Pode ser qualquer ordem.