自动化梨安装与预期



我正在编写一个小脚本,以尝试在缺少 par 时自动在系统上安装 pear-基本上,采用安装过程的交互部分并使它们非交互式,所以我需要做的就是执行脚本,它自己为我完成。这是我第一次尝试使用 expect,这不是我所期望的。

示例代码如下:

 /usr/bin/expect <<EOD
          set timeout 20
          set number [lindex $argv 0]
          set path [lindex $argv 1]
 spawn php -q go-pear.phar
 expect "1-11, 'all' or Enter to continue:"
 send "$numberr"
interact
 expect "Installation base ($prefix) [/usr/local] :"
send "$pathr"
 interact
EOD

这目前还不太有效,因为它试图在第一个菜单中填写/usr/local 部分,如下所示:

1-11, 'all' or Enter to continue: invalid command name "/usr/local"
    while executing
"/usr/local"
    invoked from within
"expect "Installation base () [/usr/local] :""

谁能告诉我我在这里错过了什么?另外,我想得到这个,这样我就不必将其作为 ./script $var 0 $var 1 运行,而只是将其作为 ./script 运行,其中包含所有内容并填写,但不确定如何做到这一点。

提前感谢您提供的任何帮助。

一个问题是字符串中的[...]告诉期望执行命令。我认为你需要用[...]逃离他们.

希望这有所帮助=)

我最终弄清楚了这一点。如果其他人想做类似的事情,以下是对我有用的方法:

 /usr/bin/expect <<EOF
set send_slow {1 .1}
set timeout -1   
 spawn php -q go-pear.phar
 expect "1-11, 'all' or Enter to continue:"
   sleep .1
 send -s -- "1r"
 expect -exact "1r"
   sleep .1
 send -s -- "/usr/localr"
 expect -exact "/usr/localr"
 expect "1-11, 'all' or Enter to continue:"
   sleep .1
 send -s -- "r"
 expect -exact "r"
 expect EOF

相关内容

  • 没有找到相关文章

最新更新