Чтение онлайн

ЖАНРЫ

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

read var

echo "\"var\" = "$var""

# Здесь нет ничего неожиданного.

# -------------------------- #

echo

echo -n "Введите другое значение: "

read # Команда 'read' употребляется без указания переменной для ввода,

#+ тем не менее...

#+ По-умолчанию ввод осуществляется

в переменную $REPLY.

var="$REPLY"

echo "\"var\" = "$var""

# Эта часть сценария эквивалентна первому блоку, выделенному выше.

echo

exit 0

Обычно, при вводе в окне терминала с помощью команды "read", символ \ служит для экранирования символа перевода строки. Ключ – r заставляет интерпретировать символ \ как обычный символ.

Пример 11-4. Ввод многострочного текста с помощью read

#!/bin/bash

echo

echo "Введите строку, завершающуюся символом \\, и нажмите ENTER."

echo "Затем введите вторую строку, и снова нажмите ENTER."

read var1 # При чтении, символ "\" экранирует перевод строки.

# первая строка \

# вторая строка

echo "var1 = $var1"

# var1 = первая строка вторая строка

# После ввода каждой строки, завершающейся символом "\",

# вы можете продолжать ввод на другой строке.

echo; echo

echo "Введите другую строку, завершающуюся символом \\, и нажмите ENTER."

read -r var2 # Ключ -r заставляет команду "read" воспринимать "\"

# как обычный символ.

# первая строка \

echo "var2 = $var2"

# var2 = первая строка \

# Ввод данных прекращается сразу же после первого нажатия на клавишу ENTER.

echo

exit 0

Команда read имеет ряд очень любопытных опций, которые позволяют выводить подсказку - приглашение ко вводу (prompt), и даже читать данные не дожидаясь нажатия на клавишу ENTER.

# Чтение данных, не дожидаясь нажатия на клавишу ENTER.

read -s -n1 -p "Нажмите клавишу " keypress

echo; echo "Была нажата клавиша "\"$keypress\""."

# -s --

подавляет эхо-вывод, т.е. ввод с клавиатуры не отображается на экране.

# -n N -- ввод завершается автоматически, сразу же после ввода N-го символа.

# -p -- задает вид строки подсказки - приглашения к вводу (prompt).

# Использование этих ключей немного осложняется тем, что они должны следовать в определенном порядке.

Ключ – n, кроме всего прочего, позволяет команде read обнаруживать нажатие курсорных и некоторых других служебных клавиш.

Пример 11-5. Обнаружение нажатия на курсорные клавиши

#!/bin/bash

# arrow-detect.sh: Обнаружение нажатия на курсорные клавиши, и не только...

# Спасибо Sandro Magi за то что показал мне -- как.

# --------------------------------------------

# Коды клавиш.

arrowup='\[A'

arrowdown='\[B'

arrowrt='\[C'

arrowleft='\[D'

insert='\[2'

delete='\[3'

# --------------------------------------------

SUCCESS=0

OTHER=65

echo -n "Нажмите на клавишу... "

# Может потребоваться нажать на ENTER, если была нажата клавиша

# не входящая в список выше.

read -n3 key # Прочитать 3 символа.

echo -n "$key" | grep "$arrowup" #Определение нажатой клавиши.

if [ "$?" -eq $SUCCESS ]

then

echo "Нажата клавиша \"."

exit $SUCCESS

fi

echo -n "$key" | grep "$arrowdown"

if [ "$?" -eq $SUCCESS ]

then

echo "Нажата клавиша \"

exit $SUCCESS

fi

echo -n "$key" | grep "$arrowrt"

if [ "$?" -eq $SUCCESS ]

then

echo "Нажата клавиша \"О\"."

exit $SUCCESS

fi

echo -n "$key" | grep "$arrowleft"

Поделиться с друзьями: