【问题标题】:Assert on the postgres count output using bash使用 bash 断言 postgres 计数输出
【发布时间】:2018-06-22 14:00:39
【问题描述】:

我想使用 bash 对 postgres 查询的输出进行断言。具体来说,我正在编写一个计算行数的 bash 作业,如果计数不等于 0,则执行一些操作来提高警报。

$ psql MY_DATABASE -c "SELECT COUNT(*) WHERE foo=bar"
 count
-------
    0
(1 row)

在我的脚本中,我想断言上述查询的输出为零。但是我不确定从哪里开始,因为输出不是数字,而是格式化的多行字符串。

psql中是否有一个选项可以让它在计数时输出一个数字,或者你能想到其他方法吗?

【问题讨论】:

  • 试试psql -qAt。有关详细信息,请参见手册页。
  • @teppic 谢谢,它成功了。你能发布一个答案让我接受吗?我也做了COUNT=$(psql MY_DATABASE -c "SELECT COUNT(*) WHERE foo=bar" | sed -n 3p | xargs),但你的解决方案更可靠。

标签: bash postgresql psql


【解决方案1】:

我建议使用临时文件来重定向输出并使用它。完成工作后,删除临时文件。

psql your_database -c "SELECT COUNT(*) as Count from table_a where c1=something"  -t >assert.tmp
line=$(head -n 1 assert.tmp)
if [ $line -ge 0 ]; then
    echo "greater then 0 and values is--"$line
fi
rm assert.tmp

希望它对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2021-08-25
    • 1970-01-01
    相关资源
    最近更新 更多