LoginSignup
0
0

More than 3 years have passed since last update.

【digdag】shellでのネストされた変数の扱われ方

Last updated at Posted at 2020-12-08

概要

_exportで入れ子の変数を定義した場合の扱われ方。
入れ子の変数を定義すると環境変数としてjsonのような文字列(例: {"b1":"foo","b2":"var"}
として格納されてしまい、大変扱いにくくなってしまう。

対策案

  • shellオペレータでなくpythonオペレータで処理を行う
  • そもそも入れ子の変数を避ける

これくらいしか思い浮かばなかったので、うまく例のfoovarを取り出す方法があればコメントで教えて下さい。

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
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0