5.2. Команда read

5.2. Команда read

Команда read читает одну строку из стандартного входного потока и записывает ее содержимое в указанные переменные. Если задана единственная переменная, в нее записывается вся строка. В результате ввода команды read без параметров строка помешается в переменную среды $reply. При указании нескольких переменных в первую из них записывается первое слово строки, во вторую — второе слово и т. д. Последней переменной присваивается остаток строки.

Общий формат команды таков:

read переменная1 переменная2…

В следующем примере в переменную name записывается весь вводимый с клавиатуры текст до тех пор, пока не будет нажата клавиша [Enter]:

$ read name Джон Алан Доу $ echo $name

Джон Алан Доу

Представленная ниже команда заносит введенные имя и фамилию в две переменные. В качестве разделителя между словами используется пробел.

$ read name surname

Джон Доу

$ echo $name $surname

Джон Доу

Если во входной строке больше слов, чем указано переменных, в последнюю переменную записываются все оставшиеся слова:

$ read name surname Джоя Алан Доу

$ echo $name

Джон

$ echo $surnane

Алан Доу

Следующий сценарий вызывает отдельную команду read для чтения каждой переменной:

$ cat var_test

#!/bin/sh

# var_test

echo "Имя:c"

read name

echo "Отчество:c"

read middle

echo "Фамилия:c"

read surname

В Linux…

Вместо управляющего символа с в команде echo следует указывать опцию -n:

$ cat var_test

#!/bin/sh

# var_test

echo -n "Имя:"

read name

echo -n "Отчество:"

read middle

echo -n "Фамилия:"

read surname