予想される変数引数を渡す方法

予想される変数引数を渡す方法

予想されるスクリプトに可変数の引数を渡したいと思います。

#!/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 1i

関連情報