我写了一个 bash 脚本,它应该可以从网络上安装。它应该在运行时接受用户的输入。以下是我的做法,但它直接终止应用程序而不提示用户输入信息。
curl www.test.com/script.sh | bash
我在某处读到 stdin 是通过管道传输到 bash 的,这就是它没有提示任何内容的原因。
任何帮助都会很棒。
多谢你们
使用进程替换:
bash <(curl www.test.com/script.sh)
尝试
bash -c '`curl www.test.com/script.sh`'
虽然如果脚本中有单引号,这会出现问题。
如果做不到这一点,请分两步进行:
curl -o /tmp/script.sh www.test.com/script.sh
bash /tmp/script.sh
您可以将脚本保存在您喜欢的任何地方,并且为了更好的安全性等,您可能想要使用tmpfile
或其他东西,但是直接从网络上运行脚本听起来并不像高安全性。
你可以试试:
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.