素でやると
こう。
$ export $(echo '{"hoge": 1, "hoga":2}' | jq -r 'keys[] as $k | "\($k)=\(.[$k])"')
$ echo $hoge $hoga
1 2
スクリプトにする
.
か source
で呼び出して使う。
json_to_env.sh
# stdinから受け取ったjsonを環境変数にexport
export $(jq -r 'keys[] as $k | "\($k)=\(.[$k])"')
なんでこんなのが必要なの?
digdag の for_each にタプルを渡したいんだけどできなそうなので試行錯誤してみた結果、これでいけた。
ダーティハックっぽいけど。
a.dig
_export:
vars:
- hoge: 111
hoga: 222
- hoge: 333
hoga: 444
- hoge: 555
hoga: 666
+task:
for_each>:
var: ${vars} # ← {key:value} のjsonで渡されてくる
_do:
sh>: . json_to_env.sh <<< $var && echo $hoge $hoga
実行
digdag run -a -E a.dig