6

我正在为一个 github 项目构建一个引导程序,并希望它是一个简单的单线。该脚本需要输入密码。

这有效并停止脚本等待输入:

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh -o setup.sh
bash setup.sh

这不会,只是跳过输入请求:

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh | bash

setup.sh 包含的代码类似于:

# code before
read -p "Password:" -s password
# code after

有没有可能有一个干净的单衬?如果是这样,一个人怎么可能做到这一点?

解决方法:

使用三个命令而不是管道输出。

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh -o vhosts.sh && bash vhosts.sh && rm vhosts.sh

4

2 回答 2

6

我遇到了与 OP 完全相同的问题,正在寻找答案。这个问题对我来说是谷歌上的第一个问题,因为它还没有真正的答案,所以这是我最终偶然发现的命令,它解决了我read在远程脚本中使用的需要。

bash <(curl -s https://example.com/my-bash-script.sh)
于 2021-03-31T01:51:39.367 回答
4

使用管道,read从标准输入(管道)读取,但 shell 已经读取了所有标准输入,因此没有任何内容可供read读取。

于 2013-05-31T09:37:42.133 回答