Linux 如果找到零行,则返回psql代码

Linux 如果找到零行,则返回psql代码,linux,bash,postgresql,psql,Linux,Bash,Postgresql,Psql,如果找到零行,我希望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

如果找到零行,我希望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将使它不打印列标题和摘要信息,因此如果需要这些内容,您可能需要调整此命令行。

我认为psql本身无法完成此操作,但是如果您只想查看是否有任何行具有退出状态,您可以像这样组合它

psql -U postgres -d db -t -c "select * from user where id=1 and name='Joe'" | egrep .
如果egrep不能匹配任何内容,则将导致它以非零退出。t将使其不打印列标题和摘要信息,因此如果需要这些内容,您可能需要调整此命令行。

为什么不尝试选择count*。价格也便宜多了。@Dinesh select count*将始终返回一行。@eatonphil请注意它可能就是您要查找的内容,而不使用grep命令为什么不尝试select count*。价格也便宜多了。@Dinesh select count*将始终返回一行。@eatonphil请注意,这可能是您在不使用grep命令的情况下要查找的内容