スクリプトに引数として渡すためにファイルを繰り返します。

スクリプトに引数として渡すためにファイルを繰り返します。

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

スクリプトは3つのファイルとtable_001.qtable_002.qtable_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. すべての変数拡張を引用してください。

変数拡張に関する引用:

関連情報