我有我的数据库连接字符串我从其他程序获取,我想将它用作psql的参数:
示例:
http get https://api.heroku.com/apps/foo-app/config-vars Accept:"application/vnd.heroku+json;version=3" | jq '.DATABASE_URL'
返回:
postgres://foo:bar@example.com:5432/mydb
我希望基本上能够:
http get https://api.heroku.com/apps/foo-app/config-vars Accept:"application/vnd.heroku+json;version=3" | jq '.DATABASE_URL' | psql ?
我该怎么做,我宁愿避免像这样评估整个字符串:
psql $(http get https://api.heroku.com/apps/foo-app/config-vars Accept:"application/vnd.heroku+json;version=3" | jq '.DATABASE_URL')
答案 0 :(得分:1)
没有必要担心$()
,特别是如果你引用它并且它没有启动命令:
psql "$(http get https://api.heroku.com/apps/foo-app/config-vars Accept:"application/vnd.heroku+json;version=3" | jq '.DATABASE_URL')"
如果你没有引用它,另一方可能会让你的shell进行不必要的单词拆分和通配,但就是这样。你实际上并没有eval
在这里使用字符串。
str="argument; echo danger" #example wanna-be malicous payload
: $str #will not echo danger
eval ": $str" #this will
答案 1 :(得分:0)