如何在期望条件语句中执行命令
问题描述:
当我尝试在期望条件语句中使用变量时,事实证明它不起作用。如何在期望条件语句中执行命令
结果:
[email protected]:~/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
--update--
我找到我的剧本的问题是没有得到的用户名,但设置的用户名通过`...`
的命令。我将其更改为[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
答
与$env(...)
作为一个例子,前缀它使用$HOME
,做到这一点$env(HOME)
参见:如何指望条件语句中使用bash脚本变量] (https://*.com/q/11131318/3776858) – Cyrus
@Cyrus,我没有找到任何线索从我回答这个问题之前的答案。 –
[如何访问Expect脚本中的环境变量?](https://*.com/questions/12695474/how-to-access-environment-variables-in-an-expect-script)可能的重复 – mihir6692