如何将变量参数传递给expect

如何将变量参数传递给expect

我想将可变数量的参数传递给期望脚本:

#!/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 },传递给命令的字符串sendecho $i。相反,当 为 1 时send "echo $i\n"会传递字符串echo 1(和换行符)i,依此类推。

相关内容