【问题标题】:psql return code if zero rows found如果找到零行,则 psql 返回代码
【发布时间】:2015-04-29 15:33:58
【问题描述】:

如果发现零行,我希望我的 psql 命令失败:

psql -U postgres -d db -c "select * from user where id=1 and name='Joe';"

我希望能够检查返回值。如果至少存在一行,则从进程(!)返回 0,如果不存在这样的行,则从 psql 进程返回非零。如果没有找到行,如何设置返回码?

【问题讨论】:

  • 何不试试select count(*)。也便宜很多。
  • @Dinesh select count(*) 将始终返回一行。
  • @eatonphil 请查看this,它可能是您在不使用grep 命令的情况下寻找的内容

标签: linux bash postgresql psql


【解决方案1】:

我不认为 psql 可以自己做,但如果你只是想看看是否有任何行与退出状态,你可以像这样组合它

psql -U postgres -d db -t -c "select * from user where id=1 and name='Joe'" | egrep .

如果 egrep 无法匹配任何内容,这将导致 egrep 以非零值退出。 -t 将使它不打印列标题和摘要信息,因此如果您需要这些内容,您可能需要调整此命令行。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2015-07-11
    相关资源
    最近更新 更多