【问题标题】:Running bash script after WGET ignores read user input在 WGET 后运行 bash 脚本会忽略读取的用户输入
【发布时间】:2018-10-19 09:52:25
【问题描述】:

我正在尝试创建一个可以从终端轻松下载和运行的 bash 脚本。在 bash 脚本中有几个用户输入。

跑步:

sudo wget -O - https://script.com/script.sh | bash

这将下载脚本并使用 bash 运行它,但会忽略 script.sh 中的用户输入:

echo "Please enter a username:"
read -p 'Username: ' uservar
echo "Please enter a strong password:"
read -sp 'Password: ' passvar
echo
echo "
user=$uservar
password=$passvar
" >> ~/.data/cred.conf
echo "Succesfully installed."

跑步:

sudo wget -O - https://script.com/script.sh && bash ./script.sh

工作正常并提示用户输入。有什么方法可以让用户输入使用管道 (| bash) 吗?

【问题讨论】:

标签: linux bash shell debian wget


【解决方案1】:

来自评论

| bash <(cat) </dev/tty

为什么以及如何工作

  • &lt;(cat) 构造允许
    • 创建一个从继承的输入读取的进程,此时,它是管道输出
    • 将输出重定向到用作文件的文件描述符,并将进程扩展更改为用作文件名的字符串
  • &lt;/dev/tty 将伪终端设备 /dev/tty 重定向到 bash 进程的输入

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    相关资源
    最近更新 更多