如何在bash子shell中读取来自用户的输入

问题描述:

我有一个用户粘贴在其终端中的片段。它看起来像这样:如何在bash子shell中读取来自用户的输入

"script..." | sudo bash -s ARG1 

脚本部分实际上是一个curl命令是通过HTTP获取的脚本。
我还需要传递给该脚本的参数,并且可以使用-s参数对bash执行此操作。 (这是所有片段的一部分)

但是,我也需要“读”才能工作..我想提示用户进行其他配置。它现在不起作用,可能是由于subshel​​ls/stdin被重定向。

我该怎么办?

+0

您的期望,它不工作是正确的。解决方案涉及Scrutinizer的答案,以及下载到一个tmp文件并执行它,跳过'-s'选项,从脚本输入缓冲(其中包括I/O,这是导致读取失败) – Petesh 2013-03-03 13:39:18

也许使用一个明确的本地重定向:

read answer < /dev/tty 
+0

这样做。非常感谢! – 2013-03-04 10:04:52

+1

我有这个答案的问题是,阅读发生在回音之前解释什么类型发生... – 2014-11-07 16:59:18

+1

@DavidSulpy尝试这样:''读-p“输入答案:”答案 dev/tty'' – 2016-10-05 11:12:16