概要
_export
で入れ子の変数を定義した場合の扱われ方。
入れ子の変数を定義すると環境変数としてjsonのような文字列(例: {"b1":"foo","b2":"var"}
)
として格納されてしまい、大変扱いにくくなってしまう。
対策案
- shellオペレータでなくpythonオペレータで処理を行う
- そもそも入れ子の変数を避ける
これくらいしか思い浮かばなかったので、うまく例のfoo
やvar
を取り出す方法があればコメントで教えて下さい。
digファイル
+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