Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用expect进行无人值守(无提示)自制安装_Macos_Installation_Homebrew_Expect - Fatal编程技术网

Macos 使用expect进行无人值守(无提示)自制安装

Macos 使用expect进行无人值守(无提示)自制安装,macos,installation,homebrew,expect,Macos,Installation,Homebrew,Expect,根据自制安装说明,可以使用以下命令进行安装: ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 这是可行的,但需要用户输入两次;要确认安装,请在脚本调用的sudo提示符中执行以下操作: $ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" ==> This script will ins

根据自制安装说明,可以使用以下命令进行安装:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
这是可行的,但需要用户输入两次;要确认安装,请在脚本调用的sudo提示符中执行以下操作:

$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1

Press RETURN to continue or any other key to abort
==> /usr/bin/sudo /bin/mkdir /usr/local
Password:
Homebrew没有无人参与安装的参数,因此我能想到的唯一选项是以编程方式输入预期数据。我尝试使用
expect
,但语法不太正确:

$ expect -c 'spawn ruby -e \"\$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)\";expect "RETURN";send "\n"'
ruby: invalid option -f  (-h will show valid options) (RuntimeError)
send: spawn id exp7 not open
    while executing
"send "\n""

我做错了什么?

如果您想创建一个安装脚本,以静默方式安装
homebrew
,那么只需将一个空白的
echo
导入homebrew的安装程序即可。然后将结果重定向到@charles duffy建议的
/dev/null

#/usr/bin/env bash
#install.sh
URL\uhttps://raw.githubusercontent.com/Homebrew/install/master/install'
echo-n'-安装brew…'
echo |/usr/bin/ruby-e“$(curl-fsSL$URL_BREW)”>/dev/null
如果[$?-等式0];然后回音‘OK’;否则回声‘NG’;fi

简短回答的可能重复:不需要使用
expect
——如果stdin是TTY,则自制的安装程序只会提示。只需从
/dev/null
重定向stdin,就不会出现提示。问题的第二部分如何?如何从用户处获取密码?
$ ./install.sh