如何在expect中使用send命令发送变量拼接字符串的内容
Expect变量与字符串拼接发送正确写法
Expect 基于 Tcl 语法,字符串拼接直接在双引号内完成即可,为了避免变量名识别歧义,推荐用花括号明确变量边界:
expect "UNIX" {send "${user}01\r"}
当你传入的user值为Samanta时,上述代码会自动拼接输出Samanta01\r,完全符合需求。
错误写法原因说明
send $user"01\r":拆分的字符串会被 Tcl 识别为两个独立参数,send 命令无法正确拼接内容。send "$user"01\r"":引号嵌套逻辑错误,Tcl 解析时会提前闭合字符串,触发语法错误。send "$user'01\r'":单引号会被当做普通字符发送,最终输出会带上多余的单引号,不符合需求。
完整示例代码
set user [lindex $argv 0] expect ">" {send "passwd $user\r"} sleep 1 # 第一次输入新密码 expect "UNIX" {send "${user}01\r"} sleep 1 # 第二次确认密码 expect "UNIX" {send "${user}01\r"}
内容的提问来源于stack exchange,提问作者Heron
相关产品推荐
相关产品推荐

