【发布时间】:2023-12-19 07:38:02
【问题描述】:
我提前道歉 - 我没有完全理解我所问的背后的想法,无法理解为什么它不起作用(我不知道我需要学习什么)。我首先在堆栈交换中搜索了答案 - 我发现了一些似乎可能相关的信息,但没有很好地解释这些概念,以至于我理解了如何构建一个有效的解决方案。我一直在搜索谷歌,但没有找到任何以我理解的方式准确描述正在发生的事情的信息。任何可以帮助我理解正在发生的事情的背景概念的指导将不胜感激。
是否可以在从管道执行的 bash 脚本中获取用户输入?
例如:
wget -q -O - http://myscript.sh | bash
在脚本中:
read -p "Do some action (y/n): " __response
if [[ "$__response" =~ ^[Yy]$ ]]; then
echo "Performing some action ..."
fi
据我了解,这是行不通的,因为 read 尝试从标准输入读取输入,而 bash 脚本当前正在“通过该管道执行”(我确信有一种更技术准确的方法来描述什么是发生,但我不知道如何)。
我找到了推荐使用的解决方案:
read -t 1 __response </dev/tty
但是,这也不起作用。
任何关于我需要理解以使其工作的概念,或解释为什么它不工作或解决方案将不胜感激。
【问题讨论】: