我想将可变数量的参数传递给期望脚本:
#!/usr/bin/expect
set timeout 10
spawn ssh -o "StrictHostKeyChecking no" [lindex $argv 0]@[lindex $argv 2]
expect "password: "
send "[lindex $argv 1]\n"
expect "$ "
for {set i 1} {$i < [llength $argv]} {incr i 1} {
send { echo $i }
}
我想要得到
1
2
3
但相反我得到
echo $i
echo $i
答案1
Tcl 有 2 种字符串引用:双引号,其中$variable
进行插值(由值替换),以及大括号,其中几乎没有任何更改。因此,在 中send { echo $i }
,传递给命令的字符串send
是echo $i
。相反,当 为 1 时send "echo $i\n"
会传递字符串echo 1
(和换行符)i
,依此类推。