管道代码到 sh — 脚本不等待读取命令
Pipe Code to sh — Script not waiting on read Command
我的远程文件内容:
#!/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 标准,我想实现这一点。
问题是 stdin 正在从 curl
而不是键盘读取。您需要更改脚本以指示它专门从终端读取,如下所示:
read input < /dev/tty
echo $input
我的远程文件内容:
#!/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 标准,我想实现这一点。
问题是 stdin 正在从 curl
而不是键盘读取。您需要更改脚本以指示它专门从终端读取,如下所示:
read input < /dev/tty
echo $input