
Ich verwende dieses Expect-Skript als Antwortdatei für ein interaktives Shell-Skript:
#!/usr/bin/expect
spawn ./interactivescriptname
expect "Question 1?"
send "something\r"
expect "Question 2?"
send "yes\r"
expect "Password?"
send "somepassword\r"
interact
oben funktioniert, aber ich möchte Variablen aus einer Eingabedatei verwenden.
meine Variablendateien sehen folgendermaßen aus:
var1="something"
var2="yes"
var3="somepassword"
Normalerweise würde ich in Bash den Quellbefehl verwenden, aber in Expect funktioniert das nicht.
Irgendwelche Ideen?
Antwort1
Eine Methode wäre, TCL-Variablen in einer Datei (hier vars
) festzulegen und source
diese Datei dann vom Hauptskript aus aufzurufen.
$ 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
$
Es kann sinnvoll sein, aussagekräftigere Variablennamen zu verwenden als varN
...