私はこのExpectスクリプトを対話型シェルスクリプトの応答ファイルとして使用します。
#!/usr/bin/expect
spawn ./interactivescriptname
expect "Question 1?"
send "something\r"
expect "Question 2?"
send "yes\r"
expect "Password?"
send "somepassword\r"
interact
上記はうまくいきますが、入力ファイルの変数を使用したいと思います。
私の変数ファイルは次のとおりです。
var1="something"
var2="yes"
var3="somepassword"
通常、bashではsourceコマンドを使用しますが、Expectでは機能しません。
どんなアイデアがありますか?
答え1
1つの方法は、ファイル(ここvars
)でTCL変数を設定し、source
基本スクリプトでファイルを設定することです。
$ cat vars
set var1 something
set var2 yes
set var3 Hunter2
$ cat script
#!/usr/bin/env expect
source vars
puts $var3
$ chmod +x script
$ ./script
Hunter2
$
よりvarN
有益な変数名を使用する方が良いかもしれません。