#bash #select #options #backspace #arrow-keys
#bash #обратный пробел #клавиши со стрелками
Вопрос:
Я написал скрипт bash, который выглядит следующим образом, который в основном обрабатывает пользовательские операции на основе выбора.
PS3='Please enter current status of the completion: '
boolean_status=("completed" "not-yet")
select opt in "${boolean_status[@]}"
do
if [ "$REPLY" -ge 1 -a "$REPLY" -le 2 ]; then
n=$opt
break;
fi
done
Но я столкнулся с проблемой с этим фрагментом кода, который принимает ввод этого кода backspace as ^H
и up as [[A^
и т.д. Я хочу, чтобы мой пользователь свободно использовал стрелки вверх и вниз без появления этих символов. Есть ли способ решить эту проблему.
Как и в read
команде, у нас есть -e
опция, которая игнорирует все эти символы, что это эквивалентно в select??
Комментарии:
1. Кажется, вам понадобится замена select, которая использует readline.
2. @DanD. Хорошо, но как я могу использовать readline здесь??
3. Напишите свой собственный выбор . Замените там
read -p '#? ' opt
наread -e -p '#? ' opt
, чтобы использовать readline.4. @KNDheeraj: помог ли вам ответ?
5. @Inian на самом деле я попробовал решение сайруса, и оно работало нормально, поэтому не тестировал ваше решение!!