【发布时间】:2020-05-30 06:52:56
【问题描述】:
我正在编写一个可能需要人工输入的 git 钩子。根据this answer,必须在该脚本中使用exec < /dev/tty。这完成了工作,但现在不可能将标准输出重定向到该钩子(用于测试目的)。我想这个问题可以归结为一个问题:如何向/dev/tty 发送消息以使另一个进程可以读取它?不确定这是否可能。
这是最小的可重现示例:
# file: target.sh
exec < /dev/tty # we want to use /dev/tty
read -p "Type a message: " message
echo "The message ${message}"
我尝试了几种这样的解决方案:
echo -e "foo\n"| tee /dev/tty | source target.sh
它实际上在read 提示符之后在控制台中打印消息,但message 变量仍未设置。有什么办法可以解决吗?
【问题讨论】: