# 変数の定義

変数は以下の方法で定義できます：

* YAML で `_export` パラメータを使用する
* 変数を指定してセッションを開始する


## _export:

YAML ファイルでは、`_export:` ディレクティブで変数を定義します。これは、データベースのホスト名などの静的な設定を読み込むのに便利です。

制限事項
変数の定義内で他の変数を参照することはできません。たとえば、`_export:` 内で `bar: "${foo}_suffix"` のように変数を使って別の変数を定義することはサポートされていません。

タスクに `_export` ディレクティブがある場合、スコープ内で変数を定義するため、そのタスクとその子タスクで変数を使用できます。以下の例では、すべてのタスクで `foo=1` を使用できますが、+step1（および +analyze）のみが `bar=` を使用できます。


```yaml
_export:
  foo: 1

+prepare:
  py>: tasks.MyWorkflow.prepare

+analyze:
  _export:
    bar: 2

  +step1:
    py>: tasks.MyWorkflow.analyze_step1

+dump:
  py>: tasks.MyWorkflow.dump
```

## 変数を指定してセッションを開始

新しいワークフローセッションを開始するときに変数を設定できます。

変数を設定するには

1. `-p KEY=VALUE` を複数回使用します。
例：



```bash
$ td wf run -p my_var1=foo -p my_var2=abc
```