Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
Bash 绕过自制安装脚本中的提示(按回车键)_Bash_Homebrew - Fatal编程技术网

Bash 绕过自制安装脚本中的提示(按回车键)

Bash 绕过自制安装脚本中的提示(按回车键),bash,homebrew,Bash,Homebrew,安装自制软件的非常简单的脚本: #!/bin/bash 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 contin

安装自制软件的非常简单的脚本:

  #!/bin/bash

  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
如何在这样的脚本中按enter键?是否期望是最佳路径?

读取的源代码——它仅在stdin是TTY时提示。如果从
/dev/null
重定向stdin,它将根本不会提示。因此:

ruby \
  -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \
  </dev/null
ruby\
-e“$(旋度-fsSL)https://raw.githubusercontent.com/Homebrew/install/master/install)" \
这是为了:

:


这对我来说很好

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null
ruby-e“$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)“
如果它要求按回车键

为了更清楚地了解这一点,请掌握brew文档

https://docs.brew.sh/

要做的第一件事是看看是否可以通过重定向stdin从
/dev/null
ruby-e“$(curl…)…来跳过这一点,这意味着如果自制程序在这种情况下中止,您可以提交一个bug(或提交一个补丁),因为它表现不好。
ruby-e…<@datasmid两者之间存在差异,我的解决方案不依赖于未记录的功能——即“它仅在stdin是TTY时提示”。@l0b0,当然,但是如果没有记录它将从stdin而不是从TTY读取,那么我们无法(记录在案的,正在进行的)保证它无论如何都能工作。所有方面都依赖未记录的行为。@datasmid
yes
是而且一直都有记录;它是GNU核心实用程序的一部分。这意味着它从一开始就出现在每一个符合POSIX标准的系统上。你没有使用它并不意味着它不是真的@todd_dsm,所有POSIX系统上都存在GNU coreutils的说法是完全错误的——许多Unix(包括MacOS、FreeBSD、Solaris/SunOS,坦率地说,大多数商用Unixlike)使用自己的实用程序,而不是GNU实现。POSIX“外壳和实用程序”部分的目录位于
yes
不是这个集合的一部分。@todd_dsm,……至于“从一开始”,GNU
yes
(它早于coreutils,最初作为shellutils的一部分编写)是在1991年首次编写的。UNIX在这一点上已经存在了很长时间。我可以在安装命令中添加用户密码以避免用户交互吗?@FilthKnight您是否能够绕过密码?我也面临着这个问题。如何将它与
echo$password | sudo-S…
?@jinbeomhong,只需取出
@charlesduff,但如何自动安装自制软件?你能写一个完整的命令吗?我尝试了
yes'| echo“$password”| sudo-S/bin/bash-c“$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install.sh)“
也是。在上面的段落中,上述维护人员也提到了TTY检查(“检查它是否在不活动的终端中运行”),这是一个检查,它
@CharlesDuffy:没有异议,您接受的答案的输入重定向是有效的。也就是说,我仍然喜欢并使用这个版本,因为a)它稍微短一些,b)是MikeMcQuaid编写的。(另外,我认为您希望在评论中将“不活动”编辑为“互动”)。唉,在提出建议时,5分钟的编辑窗口早就过时了。这是最简单的解决方案,可以让安装程序摆脱陷入
按RETURN
的困扰。这在2021年3月对我起到了作用
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null
Press enter 
https://docs.brew.sh/