4.10. 使用 if-else Control Flow
管理 CLI 支持 if-其他 控制流,它允许您根据条件选择要执行的命令和操作集合。if 条件是一个布尔值表达式,评估在 关键字 后指定的管理命令或操作的响应。
如果不支持 -其他语句, 则使用嵌套。
表达式可以包含以下任一项目:
- 分组和优先级表达式的括号
条件运算符
-
和 (
及&) -
或(
||)
-
和 (
比较运算符
-
等于(
==) -
不等于(
!=) -
大于(
>) -
大于或等于(
>=) -
小于(
<) -
小于或等于(
<=) -
匹配正则表达式(
~=)
-
等于(
match 正则表达式(~=)运算符仅作为技术预览提供。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。
以下示例使用 match 正则表达式(~=)运算符来检查 features 系统属性的值是否包含 jgroups。
if (result ~= ".*jgroups.*") of /:resolve-expression(expression=${features})
echo Configuring JGroups
end-if
if (result ~= ".*jgroups.*") of /:resolve-expression(expression=${features})
echo Configuring JGroups
end-if
以下示例尝试读取系统属性 test。如果 结果 不成功 (这意味着该属性不存在),则系统属性将被添加并设为 true。
if (outcome != success) of /system-property=test:read-resource
/system-property=test:add(value=true)
end-if
if (outcome != success) of /system-property=test:read-resource
/system-property=test:add(value=true)
end-if
以上条件使用 结果,在执行 关键字 后 CLI 命令返回,如下所示:
以下示例通过检查服务器进程的启动类型(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 (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
使用 的管理 CLI 命令 如果可以在文件中指定 -其他 控制流,则在文件中单独一行执行每个命令。然后,您可以使用 --file 参数以非交互方式将 文件传递到 jboss-cli 脚本。
EAP_HOME/bin/jboss-cli.sh --connect --file=CLI_FILE
$ EAP_HOME/bin/jboss-cli.sh --connect --file=CLI_FILE