cd $var || error $"Невозможно перейти в каталог %s." "$var"
"Читает" значение переменной с устройства стандартного ввода -- stdin, в интерактивном режиме это означает клавиатуру. Ключ -a позволяет записывать значения в массивы (см. Пример 25-3).
Пример 11-2. Ввод значений переменных с помощью read
echo -n "дите значение переменной 'var1': "
# Ключ -n подавляет вывод символа перевода строки.
# Обратите внимание -- перед именем переменной отсутствует символ '$'.
# Одной командой 'read' можно вводить несколько переменных.
echo -n "дите значения для переменных 'var2' и 'var3' (через пробел или табуляцию): "
echo "var2 = $var2 var3 = $var3"
# Если было введено значение только одной переменной, то вторая останется "пустой".
Если команде read не была передано ни одной переменной, то ввод будет осуществлен в переменную $REPLY.
Пример 11-3. Пример использования команды read без указания переменной для ввода
# -------------------------- #
echo -n "Введите значение: "
# Здесь нет ничего неожиданного.
# -------------------------- #
echo -n "Введите другое значение: "
read # Команда 'read' употребляется без указания переменной для ввода,
#+ По-умолчанию ввод осуществляется в переменную $REPLY.
# Эта часть сценария эквивалентна первому блоку, выделенному выше.
Обычно, при вводе в окне терминала с помощью команды "read", символ \ служит для экранирования символа перевода строки. Ключ -r заставляет интерпретировать символ \ как обычный символ.
Пример 11-4. Ввод многострочного текста с помощью read
echo "Введите строку, завершающуюся символом \\, и нажмите ENTER."
echo "Затем введите вторую строку, и снова нажмите ENTER."
read var1 # При чтении, символ "\" экранирует перевод строки.
# var1 = первая строка вторая строка
# После ввода каждой строки, завершающейся символом "\",
# вы можете продолжать ввод на другой строке.
echo "Введите другую строку, завершающуюся символом \\, и нажмите ENTER."
read -r var2 # Ключ -r заставляет команду "read" воспринимать "\"
# Ввод данных прекращается сразу же после первого нажатия на клавишу ENTER.
Команда read имеет ряд очень любопытных опций, которые позволяют выводить подсказку - приглашение ко вводу (prompt), и даже читать данные не дожидаясь нажатия на клавишу ENTER.
# Чтение данных, не дожидаясь нажатия на клавишу ENTER.
read -s -n1 -p "Нажмите клавишу " keypress
echo; echo "Была нажата клавиша "\"$keypress\""."