Json

使用 jq 回顯文本並執行命令

  • November 23, 2016

我有一個將 json 發送到標準輸出的命令,如下所示:

foo inf –db

{
   "Name": "A rose by any any other",
   "Config": {
       "DBHost": "abc.efg.us-east-1.rds.amazonaws.com",
       "DBName": "bsghshsgh",
       "DBUser": "bshshs",
       "DBPassword": "secret"
   }
}

我想將 DBPasswod 的內容回顯到螢幕上,然後像這樣使用其他參數執行 pgsql 命令。到目前為止,我可以像這樣連接一個字元串以發送到標準輸出:

foo inf –db | jq ‘“密碼:” + .Config.DBPassword + “; psql -h " + .Config.DBHost + " -U " + .Config.DBUser + " " + .Config.DBName’

如何將密碼回顯到標準輸出並執行 pgsql 命令?

您的 JSON 格式不正確。此外,您可能應該重新考慮這種方法的合理性。但如果你堅持這樣做,你可能會嘗試這樣的事情:

foo inf --db | \
   jq -r '.Config | .DBPassword, .DBHost, .DBUser, .DBName' | \
   {
       read -r PGPASSWORD
       read -r host
       read -r user
       read -r db

       psql -h "$host" -U "$user" "$db"                
   }

(參見libpq-envars for PGPASSWORD)。

引用自:https://unix.stackexchange.com/questions/323560