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