【digdag】shellでのネストされた変数の扱われ方
概要
_export
で入れ子の変数を定義した場合の扱われ方。
入れ子の変数を定義すると環境変数としてjsonのような文字列(例: {"b1":"foo","b2":"var"}
)
として格納されてしまい、大変扱いにくくなってしまう。
対策案
- shellオペレータでなくpythonオペレータで処理を行う
- そもそも入れ子の変数を避ける
これくらいしか思い浮かばなかったので、うまく例のfoo
やvar
を取り出す方法があればコメントで教えて下さい。
digファイル
+step:
_export:
a: hoge
b:
b1: foo
b2: var
sh> env
出力
+step:
_export:
a: hoge
b:
b1: foo
b2: var
sh> env
ワークフローを実行すると以下の出力を得る。
a="hoge"
b={"b1":"foo","b2":"var"}
追記
@hiroysato さんに対策案をコメントいただきました!
ありがとうございます!
入れ子の変数が少ない場合は下記のやりかたでいい感じに取り出せそうです。
案1
実行時に${foo.bar}
に値を埋め込む方法。
_export:
foo:
bar: 1234
+echo:
sh>: "env FOO=${foo.bar} env"
案2
_env
で環境変数に${foo.var}
を埋め込む方法。
_export:
foo:
bar: 1234
+echo:
sh>: "env"
_env:
FOO: ${foo.bar}
案3(shellで取り出す)
jqでjsonから要素を取り出す。
FOO=$( echo '{"b1":"foo","b2":"var"}' | jq -r .b1 ) ; echo $FOO
foo
Author And Source
この問題について(【digdag】shellでのネストされた変数の扱われ方), 我々は、より多くの情報をここで見つけました https://qiita.com/KNT_TechTech/items/e9c45343653b9407afbd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .