簡體   English   中英

檢查unix shell腳本中psql命令的返回狀態

[英]Check return status of psql command in unix shell scripting

我使用psql命令連接並在postgreSQL數據庫上發出查詢。 任何人都可以告訴我如何在shell腳本中檢查已執行查詢的返回狀態。

我用過echo $? 命令檢查狀態,但它總是返回零。

謝謝您的幫助。

psql返回代碼記錄為

退出狀態
psql如果正常結束則返回0,如果發生自身致命錯誤則返回1(例如內存不足,文件未找到),2如果與服務器的連接變壞且會話不是交互式,則返回2腳本中發生錯誤,並且設置了變量ON_ERROR_STOP。

您可能只想使用ON_ERROR_STOP。

未通過測試並報告給shell:

$ psql -d test -v "ON_ERROR_STOP=1" <<EOF
select error;
select 'OK';
EOF

ERROR:  column "error" does not exist
LINE 1: select error;

$ echo $?
3

失敗被忽略而沒有報告給shell:

$ psql -d test  <<EOF
select error;
select 'OK';
EOF
ERROR:  column "error" does not exist
LINE 1: select error;
               ^
 ?column? 
----------
 OK
(1 row)

$ echo $?
0

如前所述在這里 ,你還可以在你的SQL文件/腳本的頂部添加此行:

\set ON_ERROR_STOP true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM