URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6876
[ Назад ]

Исходное сообщение
"Bash read"

Отправлено Gremlin2 , 23-Окт-07 13:29 
Доброго времени суток,

Команда read выводит пустую строку ожидая ввода пользователя.
Меня интересует - возможно ли что нибудь написать на это самой строке дав таким образом дефольтивный ответ для пользователя? То есть, команда read дожидается пользователя который может либо нажать enter  и ввести то что я там уже написал или подредактировать написанное и потом нажать на enter (и ввести данные). В любом случае read прочтёт только "финальный" результат написанного.

Как это сделать?


Содержание

Сообщения в этом обсуждении
"Bash read"
Отправлено vic , 23-Окт-07 13:56 
>Доброго времени суток,
>
>Команда read выводит пустую строку ожидая ввода пользователя.

Нет, не выводит пустую строку. Просто ждет ввода.

>Меня интересует - возможно ли что нибудь написать на это самой строке
>дав таким образом дефольтивный ответ для пользователя?

Имхо, нет. Все что она делает описано в man bash
Часто используют прием когда нажатие enter (т.е. пустое значение) интерпретируется как дефолтное. И далее в коде скрипта нужной переменной присваивают это дефолтное значение.


"Bash read"
Отправлено Gremlin2 , 23-Окт-07 14:20 
>Нет, не выводит пустую строку. Просто ждет ввода.

Семантика.

>Часто используют прием когда нажатие enter (т.е. пустое значение) интерпретируется как дефолтное.
>И далее в коде скрипта нужной переменной присваивают это дефолтное значение.
>

Это я знаю, но всё-же меня интересует именно тот сценарий который я описал. Может не средствами BASH но хотелось бы имплементировать именно такое поведения скрипта.

Спасибо.


"Bash read"
Отправлено CSX , 23-Окт-07 16:49 
>>Нет, не выводит пустую строку. Просто ждет ввода.
>
>Семантика.
>

Это не семантика а объяснение почему нельзя так сделать.


"Bash read"
Отправлено Gremlin2 , 23-Окт-07 18:08 
Семантика потому что команду read я привёл как пример (команды читающей input пользователя). Другими словами, вопрос состоит в том как достичь того чего я описал? Не ограничиваясь той или иной командой, так что если это не сделать командой read то существует-ли другая команда позволяющая это сделать?

Спасибо.


"Bash read"
Отправлено angra , 23-Окт-07 23:36 
смотрите в сторону библиотеки readline, интерфейс к ней есть во многих языках, в том числе и в perl. Bash тоже использует ее, но, если не ошибаюсь, только в интерактивном режиме, то есть из скриптов доступа нет, хотя на всякий случай гляньте man bash

"Bash read"
Отправлено Big Shadow , 24-Окт-07 13:57 
>если это не сделать командой read,
> то существует-ли другая команда позволяющая это сделать?

существует и позволяет не только это
попробуйте dialog, может вам подойдет


"Bash read"
Отправлено EXuDHA , 19-Дек-09 19:31 
В Bash v.4 появилась запрашиваемая Вами возможность!
Используйте команду:
read -e -i "Выбор по умолчанию"

"Bash read"
Отправлено SomeUser , 19-Апр-11 19:08 
read line ; if [[ $line == '' ]]; then line=000 ; fi; echo $line;