
我使用這個 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
...更具資訊性的變數名稱可能會更好。