2017-03-07 10 views
1

bashスクリプト内でpsql文を実行し、その結果をファイルに出力したいとします。必要に応じて、私は以下の持っているコードは動作します:bash forループ内でpsqlコマンドを実行する方法

#!/bin/bash 

query="select * from mytable;" 

psql <<EOF > output.txt 
\timing 
$query 
EOF 

私はpsqlのコマンドブロックを5回実行し、output.txtに追加結果を持っていると思います。私はそれをさらに4回コピーして貼り付けるとうまくいきますが、for-loopの中に入れようとするとエラーが発生します。これを行う方法はありますか?

これは私が疲れてループです:

#!/bin/bash 

query="select * from mytable;" 

for ((i=0; i<5; i++)) 
do 
    psql <<EOF > output.txt 
    \timing 
    $query 
    EOF 
done 

私は左にオーバー最終EOFすべての道を移動する場合はループがなかったかのように、それは一度だけ実行されます。

+0

'>> output.txt'で>' output.txt'交換してください。 – codeforester

答えて

3

ファイル内には、毎回>というファイルが上書きされています。あなたは、ループの外内>>を必要とするか>を持っている:done

>を置く
#!/bin/bash 

query="select * from mytable;" 
for ((i=0; i<5; i++)) 
do 
    psql <<EOF 
    \timing 
    $query 
EOF 
done > output.txt 

は、ループ内>>より少しより効率的です。


同様のポスト:

関連する問題