次のようにjsonをstdoutに出力するコマンドがあります。
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コマンドを実行したいと思います。これまでは、次のように文字列を連結してstdoutに送信できます。
foo inf --db | foo inf --db | jq '"パスワード: " + .Config.DBPassword + "; psql -h " + .Config.DBHost + " -U " + .Config.DBUser + " " + 。構成。DB名
stdoutにパスワードをエコーしてpgsqlコマンドを実行するには?
ベストアンサー1
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環境変数のためのPGPASSWORD
)。