如何在expect条件语句中执行命令

时间:2017-06-03 08:51:29

标签: bash expect

当我尝试在期望条件声明中使用变量时,事实证明它不起作用。

结果:

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

1 个答案:

答案 0 :(得分:0)

使用$env(...)加上前缀 例如,要使用$HOME,请执行此操作 $env(HOME)