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