当我尝试在期望条件声明中使用变量时,事实证明它不起作用。
结果:
qianyu@ubuntu:~/bin$ ./expectinstall.sh iotop
spawn sudo apt-get install iotop
[sudo] password for qianyu:
我的剧本如下:
#!/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
- 更新 -
我发现我的脚本问题没有获取用户名,而是在`...`
中按命令设置用户名。我将其更改为[exec ...]
,效果很好。
更正的脚本:
#!/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
答案 0 :(得分:0)
使用$env(...)
加上前缀
例如,要使用$HOME
,请执行此操作
$env(HOME)