psql return 找到零行时的代码

psql return code if zero rows found

如果找到零行,我希望我的 psql 命令失败:

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

我希望能够检查 return 值。如果至少存在一行,则来自进程 (!) 的 Return 0,如果不存在这样的行,则来自 psql 进程的 return 非零。如果找不到行,我如何设置 return 代码?

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

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

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