如何在bash for循环内执行psql命令
问题描述:
我想在bash脚本中执行psql语句并将结果输出到文件。我有下面的代码可以作为所希望的:如何在bash for循环内执行psql命令
#!/bin/bash
query="select * from mytable;"
psql <<EOF > output.txt
\timing
$query
EOF
我希望运行的psql命令块的5倍,并具有附加到output.txt
结果。它工作正常,如果我只复制并粘贴额外的4次,但当我尝试将它放在for循环中时,我会收到错误。有没有办法做到这一点?
这是循环我累了:
#!/bin/bash
query="select * from mytable;"
for ((i=0; i<5; i++))
do
psql <<EOF > output.txt
\timing
$query
EOF
done
如果我提出最后EOF
一路到左边,只执行一次,因为如果循环是不存在。
答
每次用循环内的>
覆盖文件。你需要>>
内或有>
外循环:
#!/bin/bash
query="select * from mytable;"
for ((i=0; i<5; i++))
do
psql <<EOF
\timing
$query
EOF
done > output.txt
把>
done
后是一点点效率比>>
内循环。
类似的帖子:
替换'> output.txt'用'>> output.txt'。 – codeforester