Я пишу скрипт bash, который будет использовать команду readline, чтобы поймать многострочный вход пользователя (список пакетов), но я не могу понять, как удалять символы (обратную косую черту) при вводе текста (предположим, что я сделал ошибка). Ниже приведена часть кода, который я подразумеваю.Как удалить символ в bash read -d многострочный вход?
read -d `echo -e "\e"` -p $'Give me a list:\n' PACKAGES
\ e - символ выхода для выхода из многострочного ввода. Вот то, что я получил, когда я пытаюсь удалить символ (я перепробовал все методы, которые я знаю: Alt + обратный слэш, Ctrl + W, Ctrl + U):
# read -d `echo -e "\e"` -p $'Give me a list:\n' vPACKAGES
Give me a list:
line one
line two
line 3^H^W^U^H^
Как вы можете видеть^H, как обратный слэш был встроен,^W = ctrl + w, поэтому я не могу удалить любого символа только с помощью escape. Я попытался сыграть с флажками чтения, давая мне удалять символы, но enter больше не является выключателем линии.
Благодарим вас за ваши советы и помощь.
Зачем это делать так? Почему бы просто не зациклиться до получения пустого или какого-либо другого терминатора? Вам нужно просто запросить один раз, чтобы он выглядел одинаково, но это также означает, что вы можете проверить строку за строкой, если хотите. –
Можете ли вы, пожалуйста, привести простой пример, я не уверен, что я вас понял? Спасибо – LinenG