faça um loop sobre os arquivos para passar como argumentos para um script

0

Eu tenho um script some.sh que faz um loop sobre vários arquivos;

#!/bin/bash
path_to_destin ="/some/path/"
path_to_raw ="some/other/path"
list = "001 002 003"
for l in $list
do
    mkdir $path_to_destin/output_$l
    python somescript.py -input $path_to_raw/dir_$l -output $path_to_destin/output_$l/table_$l.txt 
done

Este script gera três arquivos table_001.q , table_002.q e table_003.q .

Após o loop, outro script toma como entrada esses arquivos,

some_other_script -i table_001.q -i table_002.q -i table_003.q -o all.q

Existe uma maneira de executar quantos -i table_*** , como é indicado em $list ?

    
por user3037937 09.05.2018 / 15:59

1 resposta

2
#!/bin/bash

indir='/some/other/path'
outdir='/some/path'

list=( 001 002 003 )

for i in "${list[@]}"; do
    mkdir -p "$outdir/output_$i"
    python somescript.py -input "$indir/dir_$i" -output "$outdir/output_$i/table_$i.txt"

    inargs+=( -i "table_$i.q" )
done

some_other_script "${inargs[@]}" -o all.q

Observações:

  1. As atribuições podem não ter espaço em torno de = .
  2. Recuo e espaço em branco melhoram a legibilidade.
  3. Não faça um loop por strings, faça um loop por matrizes.
  4. Cite todas as expansões de variáveis.

Em relação à citação de expansões variáveis:

por 09.05.2018 / 16:12