Psql

如何在條件 (if) 中使用來自 prompt 的輸入?

  • May 26, 2018

假設我從提示中獲得價值?

\prompt 'Write [Yes] or [No]\n' store

哪個做到這一點,

Write [Yes] or [No]
Yes

我可以驗證我有這個作品,

\echo :store
Yes

但是,我無法使用它\if

\if :store='Yes'
unrecognized value "Yes=Yes" for "\if expression": Boolean expected

\prompt的醫生對此並沒有多說

\prompt [ text ] name提示使用者提供分配給變數名稱的文本。可以指定可選的提示字元串 text。(對於多詞提示,用單引號將文本括起來。)

預設情況下,\prompt 使用終端進行輸入和輸出。但是,如果使用了 -f 命令行開關,\prompt 將使用標準輸入和標準輸出。

您可以使用 using\gset將變數強制轉換為\if可以使用的布爾值來完成此操作,

$ cat if_prompt.sql 
\prompt 'enter abc here: ' x
select ('abc' = :'x') as is_abc \gset
\if :is_abc
 \echo you can read
\else
 \echo you are illiterate or impertinent
\endif

測試一下,

$ psql test -f if_prompt.sql 
enter abc here: abc
you can read

$ psql test -f if_prompt.sql 
enter abc here: 123
you are illiterate or impertinent

引用自:https://dba.stackexchange.com/questions/207666