linux - WGET 后运行 bash 脚本会忽略读取用户输入

标签 linux bash shell debian wget

我正在尝试创建一个可以轻松下载并从终端运行的 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)一起使用吗?

最佳答案

来自评论

| bash <(cat) </dev/tty

为什么以及如何运作

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

关于linux - WGET 后运行 bash 脚本会忽略读取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52889971/

相关文章:

linux - 如何在某一点之后grep所有文本

linux - Sed - 修改第一列中的单个字符而不触及其他字符

c++ - ThreadSanitizer 说我的 Atomic Inc/Dec 存在数据争用,这是误报吗?

mysql - shell脚本不执行

c - 在应用程序退出之前删除所有文件

linux - 对文件进行排序,然后按原始顺序打印出其中的一部分 - Bash

linux - Bash 脚本的 SSH(SSH 代理)

bash - wp-cli:无法在 MAMP 上运行 phpunit

python - 使用 Poetry 在 Python 项目中执行自定义命令

shell - 如何在任何时候恢复 ftp 下载? (shell 脚本,wget 选项)?