循环文件以作为参数传递给脚本

循环文件以作为参数传递给脚本

some.sh我有一个循环多个文件的脚本;

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

该脚本生成三个文件table_001.qtable_002.q以及table_003.q.

循环之后,另一个脚本将这些文件作为输入,

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

有没有办法运行-i table_***如所示的那么多$list

答案1

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

观察结果:

  1. 作业周围可能没有空间=
  2. 缩进和空格提高了可读性。
  3. 不要循环字符串,而循环数组。
  4. 引用所有变量扩展。

关于变量扩展的引用:

相关内容