我正在编写一个小脚本来尝试在系统上自动安装 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 "$number\r"
interact
expect "Installation base ($prefix) [/usr/local] :"
send "$path\r"
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 $var0 $var1 运行,而只需将它作为 ./script 运行,其中包含并填写所有内容,但不知道该怎么做那。
提前感谢您提供的任何帮助。