管道代码sh - 脚本不等待读取命令

时间:2016-09-23 13:44:47

标签: shell curl download pipe posix

我的远程文件的内容:

#!/bin/sh
read foo && echo "$foo"

我在终端本地做的事情:

$ curl -fLSs http://example.com/my-remote-file.sh | sh

我期待的是什么:

下载的脚本应提示用户输入内容并等待用户输入。

实际发生的事情:

下载的脚本会跳过read命令并继续执行。

问题

如何提示用户输入通过curl下载的脚本中的内容?我知道sh <(curl -fLSs http://example.com/my-remote-file.sh)正在运行,但这不符合POSIX标准,我想实现这一目标。

1 个答案:

答案 0 :(得分:2)

问题是 stdin 是从curl而不是键盘读取的。您需要更改脚本以指示它专门从终端读取,如下所示:

read input < /dev/tty
echo $input