Команда echo отображает на экране указанную строку текста. Общий ее формат таков:
echo строка
В строке могут встречаться различные управляющие символы, ниже перечислены основные из них: \c запрет отображения концевого символа новой строки \f прогон страницы \n новая строка \t горизонтальная табуляция
Например, если указать управляющий символ \с, то по завершении вывода не будет осуществлен переход в новую строку:
$ echo "Как вас зовут?\t\c"
Как вас зовут? $
Здесь $ -cимвол приглашения.
По умолчанию подразумевается, что в конце строки находится символ новой строки:
$ echo "Как вас зовут?"
Как вас зовут? $
В строке можно вычислять значения переменных интерпретатора shell и даже других команд. Например, следующая команда сообщает о том, каков начальный каталог текущего пользователя (переменная среды $номе) и к какому терминалу он подключен (команда tty заключена в обратные кавычки, чтобы интерпретатор shell поместил в строку результат ее выполнения):
$ echo "Ваш начальный каталог $HOME, вы подключены к терминалу `tty`"
Ваш начальный каталог /home/dave, вы подключены к терминалу /dev/ttyp1
В Linux…
Чтобы запретить вывод символа новой строки, укажите опцию -n:
$ echo -n "Как вас зовут?"
Управляющие символы по умолчанию не распознаются. Чтобы активизировать их, задайте опцию -e:
$ echo -e "Как вас зовут?\t\c"
Как вас зовут? $
Для вывода дополнительных пустых строк используйте управляющий символ \n:
$ echo "Выводим 3 пустые строхи\n\n\nОК"
Выводим 3 пустые строки
OK
В любом месте строки можно размещать символы табуляции:
$ echo "Один символ табуляции\tДве табуляции\t\tOK"
Один символ табуляции Два символа табуляции ОК
Чтобы перенаправить результаты работы команды echo в файл, воспользуйтесь оператором '>':
$ echo "Строка занесена в файл." > myfile
В этом случае содержимое файла myfile будет заменено. Существует также оператор '>>', который позволяет добавить строку в конец файла:
$ echo "Отчет создал пользователь $LOGNAME. `date` " >> myfile
Здесь используется переменная среды $LOGNAME, которая содержит регистрационное имя текущего пользователя.
Рассмотрим содержимое файла myfile:
$ cat myfile
Строка занесена в файл.
Отчет создал пользователь root. Sat May 22 18:25:06 GMT 1999
Одной из проблем, с которыми часто сталкиваются начинающие пользователи при работе с командой echo, является включение в строку двойных кавычек. Символы двойных кавычек имеют специальное назначение в интерпретаторе shell,
поэтому должны быть защищены с помощью обратной косой черты. Вот как выводится на экран строка "/dev/rmt0":
$ echo "\"/dev/rmt0\""
"/dev/rmt0"
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 "Фамилия:"