下面的代码片段从文档主机中获取代理容器 ID,并将其与登录代理容器时获得的容器 ID 进行匹配。这是为了验证代理容器登录是否成功
set var_op1 [VIR-APP exec "docker ps -aqf \"name=agent\""]
set docker_op [VIR-APP exec "docker exec -it agent /bin/bash"]
set var_op2 [VIR-APP exec "uname -a"]
set result [regexp -nocase ".*$var_op1.*" $var_op2 match]
我输入的正则表达式不匹配。有人可以帮忙吗?
在这种情况下,您可以使用以下string first
命令更简单地检查一个字符串是否在另一个字符串中:
if {[string first $var_op1 $var_op2] >= 0} {
# The $var_op1 string was found inside $var_op2
}
但是,您可能会发现这会失败,因为检索 中的值的结果var_op1
包含额外的空格(例如,尾随换行符)。因此,您可能想要实际执行以下操作:
if {[string first [string trim $var_op1] $var_op2] >= 0} {
# The $var_op1 string was found inside $var_op2
}
(我相信这是导致您在regexp
搜索中出现问题的原因,但任何额外的元数据字符也会导致问题;最好在string first
这里使用。否则,还有string match
,它使用大多数人熟悉的全局样式匹配来自文件名处理,但这是一个不太正确的工具。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句