予想されるスクリプトに可変数の引数を渡したいと思います。
#!/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