Expect 脚本中的变量文件

Expect 脚本中的变量文件

我使用这个 Expect 脚本作为交互式 shell 脚本的应答文件:

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

一种方法是在文件(此处为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...更具信息性的变量名称可能会更好。

相关内容