我有一个命令将 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 | foo inf --db | jq '"密码:" + .Config.DBPassword + "; psql -h " + .Config.DBHost + " -U " + .Config.DBUser + " " + .Config.DBName'
如何将密码回显到 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
)。