linux - 在 WGET 后运行 bash 脚本会忽略读取的用户输入
问题描述
我正在尝试创建一个可以从终端轻松下载和运行的 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 进程的输入
推荐阅读
- ios - UITextField defaultTextAttributes 错误?
- java - 如何在 JavaFX GUI 程序中显示非 ascii 字符?
- ansible - 在ansible中从直到循环打印自定义消息
- r - 根据两列分配唯一 ID
- java - 这个junit测试如何通过?
- python - 在 DataFrame.to_csv() 之后 DataFrame.keys() 的格式不正确
- python - 将每个元素除以 2,它应该忽略“字符串”值
- regex - Google表格中另一张表格中重复单元格的条件格式
- ruby-on-rails - 如何在rails中找到链接的正确路径
- c - 随机数生成器为更大的长度添加“-”