4.10. if-else 制御フローの使用

管理 CLI は、条件を基にして実行するコマンドおよび操作のセットを選択可能にする if-else 制御フローをサポートします。if 条件は、of キーワードの後に指定された管理コマンドまたは操作の応答を評価するブール式です。

注記

入れ子の if-else ステートメントの使用はサポートされません。

以下の項目をどれでも式に含めることができます。

  • 式をグループ化および優先付けするかっこ
  • 条件演算子

    • および (and) (&&)
    • または (or) (||)
  • 比較演算子

    • 等しい (==)
    • 等しくない (!=)
    • より大きい (>)
    • より大きいまたは等しい (>=)
    • より小さい (<)
    • より小さいまたは等しい (<=)
    • 正規表現と一致 (~=)
重要

正規表現と一致 (~=) の演算子はテクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

以下は、正規表現と一致 (~=) の演算子を使用して、features システムプロパティーの値に jgroups が含まれるかどうかをチェックします。

if (result ~= ".*jgroups.*") of /:resolve-expression(expression=${features})
  echo Configuring JGroups
end-if

以下の例は、システムプロパティー test の読み取りを試みます。outcomesuccess でない場合 (プロパティーが存在しないことを意味します)、システムプロパティーが追加され、true に設定されます。

if (outcome != success) of /system-property=test:read-resource
    /system-property=test:add(value=true)
end-if

上記の条件は、outcome を使用します。 これは、以下のように of キーワードの後の CLI コマンドが実行されると返されます。

/system-property=test:read-resource
{
    "outcome" => "failed",
    "failure-description" => "JBAS014807: Management resource '[(\"system-property\" => \"test\")]' not found",
    "rolled-back" => true
}

以下の例は、サーバープロセスの起動型 (STANDALONE または DOMAIN) をチェックし、適切な管理 CLI コマンドを実行して ExampleDS データソースを有効にします。

if (result == STANDALONE) of /:read-attribute(name=launch-type)
    /subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled, value=true)
else
    /profile=full/subsystem=datasources/data-source=ExampleDS:write-attribute(name=enabled, value=true)
end-if

if-else 制御フローを使用する管理 CLI コマンドをファイルに指定することができ、ファイルには各コマンドを各行に個別に指定します。ファイルを jboss-cli スクリプトに渡すと、--file パラメーターを使用して非対話的に実行されます。

$ EAP_HOME/bin/jboss-cli.sh --connect --file=CLI_FILE