У меня есть скрипт, который запускает команду подоболочка/фона для чтения ввода, а затем делать больше работы:Используйте встроенную команду чтения для чтения из родительского стандартного ввода в субоболочке
#!/bin/bash
(
while true; do
read -u 0 -r -e -p "test_rl> " line || break
echo "line: ${line}"
done
) &
sleep 3600 # more work
С выше, я не даже получить подсказку. Если I exec 3>&0
перед запуском подоболочки, а затем читать из дескриптора 3 (-u 3
), то я, по крайней мере, получаю приглашение, но команда чтения по-прежнему не получает ввода, который я набираю.
Как получить прочитанный встроенный модуль для корректного чтения с терминала (дескриптор файла stdin родителя)?
Пожалуйста, напишите полные примеры – aless80
Фоновые процессы не могут читать из терминала. – Barmar
Посмотрите совместные процессы в 'man bash' – cdarke