我很抱歉 - 我并不完全了解我所询问的背后的思想,以至于不知道为什么它不能工作(我不知道我需要学习什么)。我首先在Stack Exchange上搜索答案 - 我找到了一些似乎可能相关的信息,但是没有解释这些概念得足够清晰,以至于我能够构建一个可行的解决方案。我一直在搜索Google,但没有找到任何描述正在发生的事情的确切信息,以便我理解。任何指向可能帮助我理解正在发生的事情的背景概念的方向都将不胜感激。
在脚本中:
然而,这也不能起作用。
如有关于需要理解的概念、为什么它不起作用或解决方案的任何说明,将不胜感激。
在从管道执行的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尝试从stdin读取输入,而bash脚本当前正在“通过该管道执行”(我确定有一种更精确技术的描述方法,但我不知道如何描述)。
我找到一个解决方案,建议使用:
read -t 1 __response </dev/tty
然而,这也不能起作用。
如有关于需要理解的概念、为什么它不起作用或解决方案的任何说明,将不胜感激。