2010-12-03 19 views
1

私は3つのディレクトリ/ home/user/control4、/ home/user/control8、/ home/user/control16を持っています出力をBASHの別のディレクトリにリダイレクトする方法は?

2つのループを持つスクリプトファイルを作成しました。 cc1.txt cc2.txtとcc3.txtの3つのファイルを生成し、2番目のループはディレクトリ名のためのものです

私はcc1.txt、cc2.txt、cc3.txtを/ home/user/control4、/ home/user/control8、/ home/user/control16となります。 BASHでこれを行うための正確な構文は何ですか?

ありがとうございました。

私のスクリプトファイルの外観は、この

#!/user/bin/bash 
for j in $(4 8 16) # loop for directories 
do 
for i in $(seq 1 3) # loop for simulations 
do 
.... produce cc1.txt cc2.txt cc3.txt 
done 

どのようにそれぞれのディレクトリに出力3つのファイルをするのが好き? /home/user/control$j/cc$i.txtのようなもの?

は9つのファイルを生成します

答えて

1
for j in /home/user/control{4,8,16} 
do 
    for i in cc{1,2,3}.txt 
    do 
     produce "$j/$i" 
    done 
done 

を行って。ディレクトリごとに1つのファイルを合計3つのファイルにしたいのであれば、数学ではこのトリックを行うかもしれません。私はあなたのスクリプトの権利を読んでいる場合、あなたが9つのファイルになってしまいます

for i in {1..3} 
do 
    produce "/home/user/control$((2*2**i))/cc$i.txt" 
done 
+0

親愛なるDennis-あなたの二番目の答えは、私が探していたものに近いです。前の答えは、実際には9つのファイルを生成します。乾杯 - 皆さんはまったく眠っていますか? – Tony

1
cat cc$i.txt > /home/user/control$j/cc$i.txt 
+0

いいえ、私は猫を忘れました - それは$ jを制御するのではなく、$ jを制御していますか?乾杯Andreas – Tony

+0

私の間違い、編集 –

0

:ディレクトリcontrol4、8の3各貫通CC1、および16しかし、あなたのテキスト記述は、あなただけの3つのファイルにしたいことを意味し合計:control4/cc1.txt、control8/cc2.txt、およびcontrol16/cc3.txt。

出力ファイルをパラメータとして使用するコマンドがproduceであり、合計ファイル数が3つの場合は、出力ディレクトリを3つ指定するだけで、ループを心配する必要はありません。&

出力ファイルをパラメータとして使用し、合計9個のファイルを必要とするコマンドがproduceの場合、制御$ j/cc $ i.txtはそれを行います。

出力ファイルをパラメータとして使用するコマンド(コードサンプルの行が擬似コード)を持っているコマンドproduceがなく、データを生成するコマンドは、何も指定せずにそれらのファイルをダンプするだけですそれが終わったらmv cc1.txt control4 ; mv cc2.txt control8 ; mv cc3.txt control16にしなければならないと思います。

関連する問題