【发布时间】:2017-06-20 14:49:16
【问题描述】:
我想编写一个期望脚本来执行带有参数的命令,我使用 $argv 作为命令和参数来生成,但不幸的是,似乎期望将整个命令和参数视为命令。例如,代码如下:
#!/usr/bin/expect --
set psw 123456
set timeout 360
spawn /usr/bin/sudo $argv
expect {
"*password*" {send "$psw\n"; exp_continue;}
timeout { exec kill -9 [exp_pid]; close; }
}
如果我执行 expect sudo.ext crontab -l ,就会出现一些错误:
spawn /usr/bin/sudo crontab -l
[sudo] password for jadd:
sudo: crontab -l: command not found
我应该怎么做才能使脚本将 crontab -l 视为整个命令?
----------------------------------------------- ------------------
更新答案: 该脚本在 centos 6.5 x64 和 tcl 版本 8.5.7 上运行 正如 Dinesh 回答的那样:
eval spawn /usr/bin/sudo $argv
或
spawn /usr/bin/sudo {*}$argv
两者都有效
【问题讨论】:
-
这可能是 linux.stackexchange.com 的问题。