3

我是 Bash 脚本的新手,所以请保持温和。

我通过 SSH (PuTTY) 连接到 Ubuntu 服务器,当我运行此命令时,我希望下载并执行的 bash 脚本允许用户输入,然后回显该输入。它似乎只是写出输入请求的回显标签并终止。

wget -O - https://raw.github.com/aaronhancock/pub/master/bash/readtest.sh | bash

任何线索我可能做错了什么?

更新:这个 bash 命令完全符合我的要求

bash <(wget -q -O - https://raw.github.com/aaronhancock/pub/master/bash/readtest.sh)
4

3 回答 3

1

乔纳森已经提到:bash从管道中获取它的标准输入。bash因此,当您想以交互方式输入内容时,您无法将脚本输入。但是您可以使用(假设您的登录 shell 是 a )的进程替换功能:bashbash

bash <(wget -O - https://raw.github.com/aaronhancock/pub/master/bash/readtest.sh)
于 2012-11-30T16:20:14.847 回答
0

Bash 从管道中获取标准输入,而不是从终端获取。因此,您不能将脚本通过管道传输到 bash 并仍然使用“读取”命令进行用户输入。

请注意,如果将脚本保存到本地文件并将其通过管道传输到 bash,则会遇到同样的问题:

less readtest.sh | bash
于 2012-11-30T16:12:48.670 回答
0

我发现这也有效,有助于将数据保持在当前范围内。

评价“ wget -q -O - https://raw.github.com/aaronhancock/pub/master/bash/readtest.sh

于 2012-11-30T17:10:19.213 回答