Expect

如何將變數參數傳遞給期望

  • March 5, 2021

我想將可變數量的參數傳遞給期望腳本:

#!/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,依此類推。

引用自:https://unix.stackexchange.com/questions/637758