Я наткнулся на это странное поведение встроенного чтения bash.У меня есть интерактивный скрипт, который может генерировать большой результат.Поэтому, естественно, вы добавляете | less
к нему.Скрипт по-прежнему будет запрашивать ваш ввод, но не будет отображать то, что вы набрали.
Вот небольшой пример .sh:
#!/bin/bash
echo "Type:"
read -r input
echo "Typed: ${input}"
sample.sh | less
Я заметил, что это не общая проблема с трубами (например, |cat
работает).
Любая подсказка будет оценена.
A РЕШЕНИЕ , которое работает для меня:
#!/bin/bash
STTY_ORIG="$(stty -g)" # save stty settings
stty echo # enable echo
echo "Type:"
read -e -r input # use readline (backspace will not work otherwise)
echo "Typed: ${input}"
stty "${STTY_ORIG}" # restore stty settings