You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Expect中判断变量是否包含指定字符串

Bash字符串匹配逻辑的Expect等效实现

Expect基于Tcl语言,语法规则和Bash差异较大,你原有代码的错误点和解决方案如下:

核心语法差异

  • Tcl没有=~运算符,通配符匹配使用string match命令,正则匹配使用regexp命令
  • Tcl中控制语句的代码块左大括号必须和前半部分语句放在同一行,否则会被识别为独立命令触发报错
  • Tcl中[]用于执行内部命令,不要在普通变量引用外额外套[]

对应你原始Bash需求的等效代码

set VAR "ble something"
# 通配符匹配,匹配规则和Bash的[[ $VAR == *something ]]一致
if {[string match "*something" $VAR]} {
    set VAR2 "XYZ"
} else {
    set VAR2 "YYY"
}
puts $VAR2
# 输出结果为YYY,和你给出的Bash示例运行结果一致

你尝试的包含3的字符串匹配的修正代码

if {[string match "*3*" $VAR]} {
    set VAR2 "XYZ"
    puts $VAR2
} else {
    set VAR2 "YYY"
    puts $VAR2
}

如果你需要使用正则匹配,替换string match为regexp即可,比如匹配任意位置包含3的正则写法为:

if {[regexp {3} $VAR]} {
    # 匹配成功的逻辑
}

内容的提问来源于stack exchange,提问作者Irka Irenka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:54:03