2015-04-29 46 views
0

我想因爲如果零行找到我的PSQL命令失敗:PSQL返回代碼,如果零行發現

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

我希望能夠檢查返回值。如果至少存在一行,則從進程(!)返回0,如果不存在這樣的行,則從psql進程返回非零值。如果找不到行,我該如何設置返回碼?

+0

爲什麼不嘗試'select count(*)'。也便宜很多。 – Dinesh

+0

@Dinesh'select count(*)'將始終返回一行。 –

+1

@eatonphil請看[此](http://stackoverflow.com/a/30027767/1216680)它可能是你正在尋找沒有使用'grep'命令 – Houari

回答

3

我不認爲PSQL可以自己做,但如果你只是想看看是否有任何行或不退出狀態,你可以像

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

結合起來這將導致egrep的如果它不能匹配任何東西,則退出非零。 -t將使它不打印列標題和摘要信息,所以如果你需要這些東西,你可能需要調整這個命令行。