Wenn ich versuche, eine Variable in einer expect-Bedingung zu verwenden, stellt sich heraus, dass sie nicht funktioniert.Wie führe ich den Befehl in der expect-Bedingung aus?
Ergebnis:
[email protected]:~/bin$ ./expectinstall.sh iotop
spawn sudo apt-get install iotop
[sudo] password for qianyu:
mein Skript unter:
#!/usr/bin/expect -f
set timeout -1
set password qianyu
set app [lindex $argv 0]
set username `whoami`
spawn sudo apt-get install $app
expect {
"*password for ${username}*" { send "${password}\r" }
}
expect eof
--update--
Ich finde das Problem meines Skript wird der Benutzername nicht bekommen, aber die Einstellung der Benutzernamen per Befehl in `...`
. Ich habe es in [exec ...]
geändert, und es funktioniert gut.
korrigiert Skript:
#!/usr/bin/expect -f
set timeout -1
set password qianyu
set app [lindex $argv 0]
set username [exec whoami]
spawn sudo apt-get install -y $app
expect {
"*password for ${username}*" { send "${password}\r"; }
}
expect eof
Siehe auch: [Wie Variablen Bash-Skript verwenden, in bedingten Anweisungen erwarten] (https://stackoverflow.com/q/11131318/3776858) – Cyrus
@Cyrus, ich fand keine Ahnung von der Antwort, bevor ich diese Frage posten. –
Mögliches Duplikat von [Zugriff auf Umgebungsvariablen in einem Expect-Skript?] (Https://stackoverflow.com/questions/12695474/how-to-access-environment-variables-in-an- expect- script) – mihir6692