0

I have a script some.sh that loops over several files;

#!/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

This script generates three files table_001.q, table_002.q and table_003.q.

After the loop, another script take as input these files,

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

Is there a way to run as many -i table_*** as it is indicated in $list?

ilkkachu
  • 138,973

1 Answers1

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

Observations:

  1. Assignments may not have space around =.
  2. Indentation and whitespace improves readability.
  3. Don't loop over strings, loop over arrays.
  4. Quote all variable expansions.

Regarding quoting of variable expansions:

Kusalananda
  • 333,661