Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
このページで
 

SLAX 変数の概要

SLAX 変数は、計算または静的定義できる任意の値を格納できます。これには、データ構造、XML 階層、テキストとパラメーターの組み合わせが含まれます。例えば、 オペレーション・モード・コマンド の XML 出力を変数に割り当て、その変数内の階層にアクセスすることができます。

ローカル変数とグローバル変数の両方を定義できます。変数がテンプレートの外部で定義されている場合、変数はグローバルになります。それ以外の場合は、ローカルです。グローバル変数の値は、スクリプトの任意の場所からアクセスできます。ローカル変数のスコープは、定義されているテンプレートまたはコードブロックに限定されます。

SLAX言語のバージョン1.0は、 ステートメントを使用して宣言される不変な変数を var サポートしています。Junos OSリリース12.2以降でサポートされているSLAX言語のバージョン1.1には、 ステートメントを mvar 使用して宣言された可変変数が導入されています。変更可能な変数と不変な変数については、以下のセクションで説明します。

不変な変数

SLAX 言語のバージョン 1.0 では、 ステートメントを使用して変数を var 宣言します。ステートメントを使用して var 宣言された変数は不変です。不変な変数の値は、宣言した場合にのみ設定でき、その後、値が固定されます。

宣言では、変数名の先頭にはドル記号 ($) が付けられます。XSLT 宣言とは異なり、ドル記号は要素の属性の値のname<xsl:variable>プレフィックスではありません。変数を宣言すると、ドル記号($)でプレフィックスが付いた変数名を使用して、XPath 式内で変数を参照できます。等号(=)と式で変数名に従って変数を初期化します。

次の例では、 変数を宣言して初期化します。この変数 locationは変数の初期化に message使用されます。

XSLT と同等の値は次のとおりです。

ステートメントを使用して var 宣言された変数は不変です。そのため、宣言で初期化された後に変数の値を変更することはできません。変数の値を直接更新することはできませんが、関数を再帰的に呼び出し、変数の値をパラメーターとして渡すことで、エフェクトを模倣できます。例えば:

CLI で op スクリプトを実行すると、ログ ファイルに以下の出力が生成されます。変数は count 固定のままである必要がありますが、 myparam テンプレートへの呼び出しごとに更新されます。

可変変数

Junos OS リリース 12.2 以降のリリースでサポートされている SLAX 言語のバージョン 1.1 には、可変変数が導入されています。ステートメントを var 使用して宣言された変数とは異なり、変更可能な変数の値はスクリプトによって変更できます。宣言時またはスクリプト内の任意の時点で、変更可能な変数の初期値を設定できます。

ステートメントを使用して、可変変数を mvar 宣言します。宣言では、変数名のプレフィックスはドル記号($)です。変更可能な変数を宣言すると、ドル記号($)でプレフィックスが付いた変数名を使用して、XPath 式内でそれを参照できます。等号(=)と式で変数名に従って変数を初期化します。

次の例では、可変変数を宣言して初期化します。この変数 locationは、変更可能変数 messageの初期化に使用されます。

可変変数は、宣言後に初期化または更新できます。可変変数の値を初期化または更新するには、 ステートメントを set 使用します。次の例では、 変数 、 、 blockを宣言し、 要素 <block>で初期化します。

ノード セットを表す可変変数の場合は、 ステートメントをappend使用して新しいノードを既存のノード セットに追加します。次の例では、1 つの<item>要素で初期化される変更可能な変数$mylistを作成します。変数内の$list食料品店のアイテムごとに、スクリプトは要素を<item>ノードセットに$mylistアイテムの名前とサイズで追加します。

スクリプトからの出力は次のとおりです。