Como programar a linha de comando do Linux para executar um pedaço de código várias vezes?

1

Então, eu normalmente escrevo / encontro um gerador de caso de teste para qualquer código que eu escrevo. Esse tipo de código geralmente leva a alguma saída de arquivo. Para ser minucioso, tento gerar muitos arquivos diferentes para testar meu código.

Diga que o comando é assim:

java test <parameters/> > <output filename/>

Existe uma maneira de automatizar isso para muitos valores diferentes dos parâmetros e gerar muitos arquivos diferentes?

Eu tentei:

for i in seq '0 3'; do java test $i > $i.txt; done

Não consegui usar o $ i no nome do arquivo e, sem ele, o comando não causou erros, mas não fiz mais nada. Eu sei que a linha de comando do Unix é muito poderosa, e eu tenho a sensação de que isso deveria ser possível, mas eu simplesmente não sei como fazer isso.

    
por efficiencyIsBliss 04.12.2010 / 04:59

3 respostas

5

Se você estiver usando o Bash, não há motivo para usar seq . Além disso, é recomendado que você use $() em vez de backticks (mas eles não são necessários se você estiver usando uma dessas formas).

for i in {0..3}; do java test $i > "$i.txt"; done

ou

for ((i=0;i<=3;i++)); do java test $i > "$i.txt"; done
    
por 04.12.2010 / 07:15
2

Supondo que você esteja no bash shell, apenas mova o comando seq para os backticks:

for i in 'seq 0 3'; do java test $i > $i.txt; done
    
por 04.12.2010 / 05:05
1

Eu diria que faça seu app ler stdin e gerar novos tópicos, será mais eficiente.

E ainda outro loop:

seq 0 3 | while read i; do java test $i > "$i.txt"; done
    
por 04.12.2010 / 07:23