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.q
。table_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
観察結果:
- 職場の周りにスペースがない可能性があります
=
。 - インデントとスペースを使用すると、読みやすさが向上します。
- 文字列を繰り返さず、配列を繰り返します。
- すべての変数拡張を引用してください。
変数拡張に関する引用: