2011-03-31 103 views
3

我试图让在bash如何获得psql结果在bash中?

echo 'SELECT * FROM fictive_table LIMIT 1;' >> /tmp/x.sql 
psql --single-transaction -d dbname -f /tmp/x.sql 
echo $? 

psql的结果。这会失败,但结果我在bash得到的是0.1是否存在与逻辑/代码中的问题?

从手动

PSQL返回0到外壳如果正常结束,1,如果致命 误差自身(存储器溢出,未找到文件)发生

更新: @Andrea Spadaccini是对的。这不是致命的。我怎样才能抓住它?

回答

3

也许查询触发的错误类型不是像手册中提到的类似的致命错误,也就是说,您没有耗尽内存并且没有找到找不到文件的错误。

在手册中读取一个比特进一步,我读到:

PSQL返回0到外壳如果正常结束,1,如果一个致命错误其自身(存储器溢出,未找到文件)发生,2如果到服务器的连接变坏并且会话不是交互式的,3如果在脚本中发生错误并且设置了变量ON_ERROR_STOP,则为3。

赶上你的错误,你可以尝试:

  • 设置ON_ERROR_STOP变量;或者,
  • 更改方法,将查询输出保存到文件,然后使用该文件。
0

使用选项-o写入从PSQL一个查询的结果(命令行终端)到一个文件。
Per documentation

 
-o filename 
--output=filename 

Put all query output into file filename. This is equivalent to the command \o.