【发布时间】:2012-08-28 02:18:25
【问题描述】:
我有一个从 postgres 数据库输出一些数据的脚本:
#!/bin/bash
dbname="inventory"
username="postgres"
NOW=$(date +"%d-%m-%Y-%H%M%S")
OUTPUT="output.$NOW"
psql $dbname $username << EOF
\o | cat >> $OUTPUT
select count(*) from component;
select * from product where procode='AAA';
\q
\o
EOF
如果我在本地机器上运行它,这会很高兴地将我需要的数据导出到一个文本文件中。
现在我想为 10 台远程计算机做同样的事情,并将输出存储在我运行脚本的机器上的一个文件中。我有以下代码将从远程机器上获取一些信息,但我还需要将上面的 postgres 数据添加到下面的 $FILE_OUT 中:
#!/bin/bash
NOW=$(date +"%d-%m-%Y-%H%M%S")
dbname="inventory"
username="postgres"
echo "Enter the file name"
read FILE_IN
FILE_OUT="invcheck.$NOW"
for i in $(cat $FILE_IN); do
echo $i >> $FILE_OUT
ssh user@$i "ps -efw | grep TRADINGTIMEPLUS /opt/jrms/jrms.ini" >> $FILE_OUT
我试图将 postgres 代码放在一行中:
ssh rmsasi@hj$i "psql $dbname $username << EOF \o | cat >> $FILE_OUT select * from component where code='1000';\q;\o; EOF"
但我收到错误,并且 postgres 数据未包含在 $FILE_OUT 中
psql: warning: extra option o ignored
cat: from: No such file or directory
cat: component: No such file or directory
cat: where: No such file or directory
cat: code=1000: No such file or directory
bash: line 1: q: command not found
bash: line 1: o: command not found
bash: line 1: EOF: command not found
我只是脚本新手,所以希望我只是缺少一些简单的东西。
提前致谢,如果有更好的方法来做我想要实现的目标,我很感激任何指点。
【问题讨论】:
-
感谢您在无需询问的情况下首次显示代码 :-)。
-
\o | cat >> $OUTPUT看起来很奇怪。为什么不只是\o $OUTPUT? (编辑:DUH,你在追加。没关系。)
标签: bash postgresql