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
Tcl 有 2 種字元串引用:雙引號,在其中
$variable
被插值(被值替換)和大括號,在其中幾乎沒有改變。所以在 中send { echo $i }
,傳遞給send
命令的字元串是echo $i
. 相反,當為 1 時send "echo $i\n"
將傳遞字元串echo 1
(和換行符)i
,依此類推。