3

我写了一个 bash 脚本,它应该可以从网络上安装。它应该在运行时接受用户的输入。以下是我的做法,但它直接终止应用程序而不提示用户输入信息。

curl www.test.com/script.sh | bash

我在某处读到 stdin 是通过管道传输到 bash 的,这就是它没有提示任何内容的原因。

任何帮助都会很棒。

多谢你们

4

3 回答 3

8

使用进程替换

bash <(curl www.test.com/script.sh)
于 2013-03-25T00:41:37.333 回答
1

尝试

bash -c '`curl www.test.com/script.sh`'

虽然如果脚本中有单引号,这会出现问题。

如果做不到这一点,请分两步进行:

curl -o /tmp/script.sh www.test.com/script.sh 
bash /tmp/script.sh

您可以将脚本保存在您喜欢的任何地方,并且为了更好的安全性等,您可能想要使用tmpfile或其他东西,但是直接从网络上运行脚本听起来并不像高安全性。

于 2013-03-25T00:36:14.660 回答
1

你可以试试:

 bash -c "$(curl -s www.test.com/script.sh)"

从 bash 手册页,

  -c string If the -c option is present, then commands are read from string.  
            If there are arguments after the string, they are
            assigned to the positional parameters, starting with $0.
于 2013-03-25T00:39:40.303 回答