Psql
如何在條件 (if) 中使用來自 prompt 的輸入?
假設我從提示中獲得價值?
\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