Доброго времени суток,Команда read выводит пустую строку ожидая ввода пользователя.
Меня интересует - возможно ли что нибудь написать на это самой строке дав таким образом дефольтивный ответ для пользователя? То есть, команда read дожидается пользователя который может либо нажать enter и ввести то что я там уже написал или подредактировать написанное и потом нажать на enter (и ввести данные). В любом случае read прочтёт только "финальный" результат написанного.Как это сделать?
>Доброго времени суток,
>
>Команда read выводит пустую строку ожидая ввода пользователя.Нет, не выводит пустую строку. Просто ждет ввода.
>Меня интересует - возможно ли что нибудь написать на это самой строке
>дав таким образом дефольтивный ответ для пользователя?Имхо, нет. Все что она делает описано в man bash
Часто используют прием когда нажатие enter (т.е. пустое значение) интерпретируется как дефолтное. И далее в коде скрипта нужной переменной присваивают это дефолтное значение.
>Нет, не выводит пустую строку. Просто ждет ввода.Семантика.
>Часто используют прием когда нажатие enter (т.е. пустое значение) интерпретируется как дефолтное.
>И далее в коде скрипта нужной переменной присваивают это дефолтное значение.
>Это я знаю, но всё-же меня интересует именно тот сценарий который я описал. Может не средствами BASH но хотелось бы имплементировать именно такое поведения скрипта.
Спасибо.
>>Нет, не выводит пустую строку. Просто ждет ввода.
>
>Семантика.
>Это не семантика а объяснение почему нельзя так сделать.
Семантика потому что команду read я привёл как пример (команды читающей input пользователя). Другими словами, вопрос состоит в том как достичь того чего я описал? Не ограничиваясь той или иной командой, так что если это не сделать командой read то существует-ли другая команда позволяющая это сделать?Спасибо.
смотрите в сторону библиотеки readline, интерфейс к ней есть во многих языках, в том числе и в perl. Bash тоже использует ее, но, если не ошибаюсь, только в интерактивном режиме, то есть из скриптов доступа нет, хотя на всякий случай гляньте man bash
>если это не сделать командой read,
> то существует-ли другая команда позволяющая это сделать?существует и позволяет не только это
попробуйте dialog, может вам подойдет
В Bash v.4 появилась запрашиваемая Вами возможность!
Используйте команду:
read -e -i "Выбор по умолчанию"
read line ; if [[ $line == '' ]]; then line=000 ; fi; echo $line;