Я пишу ловушку git, которая может потребовать человеческого ввода. Согласно этот ответ нужно использовать 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
остается неустановленной. Есть ли способ исправить?