Expect スクリプトの変数ファイル

Expect スクリプトの変数ファイル

私はこの 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...よりもわかりやすい変数名を使用するのがよいでしょう。

関連情報