Linux
如何將postgres結果插入shell變數
我想在變數中設置所有這些語法
su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\"" CREATE DATABASE
所以我寫了這個
res=$( su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\"" ) CREATE DATABASE
但是
$res
是空的echo $res
我也嘗試添加
" "
但沒有成功。如何插入結果
su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\""
到 shell 變數?
這個問題有點難以理解。
通過“插入…..的結果”,您是否將數據庫名稱“石墨”作為腳本中其他命令的變數插入?
您如何處理切換使用者時應該出現的密碼提示?或者這個腳本是由 root 執行的?
我很困惑你為什麼要使用這個
-l
選項——這通常是為了列出命令。你想讓這個命令作為 postgres 執行嗎?然後你應該使用該-u postgres
選項,告訴命令以 postgres 使用者身份執行它。第三,確保您有辦法為 su 使用者輸入憑據/密碼,具體取決於實際執行腳本的使用者。
假設,您可以:
- 以 sudo 執行整個腳本,而不是嘗試更改腳本內的使用者,這通常會生成密碼提示。
- 你試過使用
sudo -u postgres
嗎?postgres 使用者必須在 /etc/sudoers 文件中。- 在那張紙條上,您在系統日誌中看到了什麼?執行此腳本並且命令未完成可能存在錯誤。您是否驗證了對庫、postgres 命令和目錄的權限?
- 也許試試
sudo -u postgres -H -- plsql "CREATE DATABASE graphite WITH OWNER graphite"
下面是這些命令的一個很好的描述和範例: Linux SU、SUDO