gpt4 book ai didi

bash - 重定向到使用/dev/tty 的脚本

转载 作者:行者123 更新时间:2023-12-04 01:24:43 26 4
gpt4 key购买 nike

我正在编写一个可能需要人工输入的 git hook。根据 this answer必须使用exec < /dev/tty在那个脚本中。这可以完成工作,但现在无法将标准输出重定向到该 Hook (用于测试目的)。我想问题可以归结为一个问题:如何向 /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变量保持未设置。有什么办法可以解决吗?

最佳答案

您可以使用 expect达到结果:

#!/bin/bash

expect << EOF
spawn bash target.sh
expect {
"Type a message: " {send "foo\r"; interact}
}
EOF

关于bash - 重定向到使用/dev/tty 的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62098903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com