期望脚本安装Vagrant-无明显原因终止

时间:2019-04-11 20:01:32

标签: macos vagrant expect

我正在运行一个简单的Expect脚本,该脚本使用curl来拉动流浪汉dmg,将其附加,安装,验证密码然后分离。

所有命令都分别在命令行中执行,并且安装有效。 但是,在脚本内部执行时,它将在卷曲完成后终止。

#!/usr/bin/expect -f

set timeout 60

exec curl -O https://releases.hashicorp.com/vagrant/2.2.2/vagrant_2.2.2_x86_64.dmg
exec hdiutil attach vagrant_2.2.2_x86_64.dmg
spawn sudo  installer -package /Volumes/Vagrant/vagrant.pkg -target /
expect "*?assword" { send “password” }

spawn hdiutil unmount /Volumes/Vagrant

我得到的输出是(连接的):


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  1 31.2M    1  563k    0     0  2218k      0  0:00:14 --:--:--   0:00:01 8873k
 97 31.2M   97 30.5M    0     0  9628k      0  0:00:03  0:00:03 --:--:-- 9627k
100 31.2M  100 31.2M    0     0  9668k      0  0:00:03  0:00:03 --:--:-- 9667k
    while executing
"exec curl -O https://releases.hashicorp.com/vagrant/2.2.2/vagrant_2.2.2_x86_64.dmg"
    (file "./vag" line 9)

此时脚本终止。

1 个答案:

答案 0 :(得分:1)

  1. 如果执行的命令将任何内容输出到stderr,Tcl的exec将失败。
  2. curl将下载进度信息输出到stderr。

因此,您需要让exec忽略对stderr的输出:exec -ignorestderr curl ...