如果找到零行,我希望我的 psql 命令失败:
psql -U postgres -d db -c "select * from user where id=1 and name='Joe';"
我希望能够检查返回值。如果至少存在一行,则从进程(!)返回 0,如果不存在此类行,则从 psql 进程返回非零。如果未找到行,如何设置返回代码?
我不认为 psql 可以自己做到这一点,但如果你只是想看看是否有任何行与退出状态,你可以像这样组合它
psql -U postgres -d db -t -c "select * from user where id=1 and name='Joe'" | egrep .
这将导致 egrep 以非零退出,如果它无法匹配任何内容。 -t
将使其不打印列标题和摘要信息,因此如果需要这些内容,您可能需要调整此命令行。