books-read.com
books-read.com » Компьютеры и Интернет » Программирование » Мендель Купер - Искусство программирования на языке сценариев командной оболочки

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

Наш ресурс дает возможность бесплатно читать книгу онлайн Мендель Купер - Искусство программирования на языке сценариев командной оболочки. Жанр: Программирование издательство неизвестно, год неизвестен. Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Мендель Купер - Искусство программирования на языке сценариев командной оболочки в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

выводит (на stdout) выражение или содержимое переменной (см. Пример 4-1).

echo Hello

echo $a


Для вывода экранированных символов, echo требует наличие ключа -e. См. Пример 5-2.

Обычно, командв echo выводит в конце символ перевода строки. Подавить вывод это символа можно ключом -n.

Команда echo может использоваться для передачи информации по конвейеру другим командам.

if echo "$VAR" | grep -q txt # if [[ $VAR = *txt* ]]

then

echo "$VAR содержит подстроку "txt""

fi


Кроме того, команда echo, в комбинации с подстановкой команд может учавствовать в операции присвоения значения переменной.

a=`echo "HELLO" | tr A-Z a-z`

См. так же Пример 12-15, Пример 12-2, Пример 12-32 и Пример 12-33.

Следует запомнить, что команда echo `command` удалит все символы перевода строки, которые будут выведены командой command.

Переменная $IFS обычно содержит символ перевода строки n, как один из вариантов пробельного символа. Bash разобьет вывод команды command, по пробельным символам, на аргументы и передаст их команде echo, которая выведет эти аргументы, разделенные пробелами.

bash$ ls -l /usr/share/apps/kjezz/sounds

-rw-r--r-- 1 root root 1407 Nov 7 2000 reflect.au

-rw-r--r-- 1 root root 362 Nov 7 2000 seconds.au


bash$ echo `ls -l /usr/share/apps/kjezz/sounds`

total 40 -rw-r--r-- 1 root root 716 Nov 7 2000 reflect.au -rw-r--r-- 1 root root 362 Nov 7 2000 seconds.au


Это встроенная команда Bash и имеет внешний аналог /bin/echo.

bash$ type -a echo

echo is a shell builtin

echo is /bin/echo


printf

printf -- команда форматированного вывода, расширенный вариант команды echo и ограниченный вариант библиотечной функции printf() в языке C, к тому же синтаксис их несколько отдичается друг от друга.

printf format-string... parameter...

Это встроенная команда Bash. Имеет внешний аналог /bin/printf или /usr/bin/printf. За более подробной информацией обращайтесь к страницам справочного руководства man 1 printf по системным командам.

Старые версии Bash могут не поддерживать команду printf.

Пример 11-1. printf в действии

#!/bin/bash

# printf demo


# От переводчика:

# Считаю своим долгом напомнить, что в качестве разделителя дробной и целой

# частей в вещественных числах, может использоваться символ "запятая"

# (в русских локалях), поэтому данный сценарий может выдавать сообщение

# об ошибке (у меня так и произошло) при выводе числа PI.

# Тогда попробуйте заменить в определении числа PI десятичную точку

# на запятую -- это должно помочь. ;-)


PI=3,14159265358979

DecimalConstant=31373

Message1="Поздравляю,"

Message2="Землянин."


echo


printf "Число пи с точностью до 2 знака после запятой = %1.2f" $PI

echo

printf "Число пи с точностью до 9 знака после запятой = %1.9f" $PI # Даже округляет правильно.


printf "n" # Перевод строки,


printf "Константа = t%dn" $DecimalConstant # Вставлен символ табуляции (t)


printf "%s %s n" $Message1 $Message2


echo


# ==========================================#

# Эмуляция функции 'sprintf' в языке C.

# Запись форматированной строки в переменную.


echo


Pi12=$(printf "%1.12f" $PI)

echo "Число пи с точностью до 12 знака после запятой = $Pi12"


Msg=`printf "%s %s n" $Message1 $Message2`

echo $Msg; echo $Msg


exit 0

Одно из полезных применений команды printf -- форматированный вывод сообщений об ошибках

E_BADDIR=65


var=nonexistent_directory


error()

{

printf " [email protected]" >&2

# Форматированный вывод аргументов на stderr.

echo

exit $E_BADDIR

}


cd $var || error $"Невозможно перейти в каталог %s." "$var"


# Спасибо S.C.


read

"Читает" значение переменной с устройства стандартного ввода -- stdin, в интерактивном режиме это означает клавиатуру. Ключ -a позволяет записывать значения в массивы (см. Пример 25-3).

Пример 11-2. Ввод значений переменных с помощью read

#!/bin/bash


echo -n "дите значение переменной 'var1': "

# Ключ -n подавляет вывод символа перевода строки.


read var1

# Обратите внимание -- перед именем переменной отсутствует символ '$'.


echo "var1 = $var1"


echo


# Одной командой 'read' можно вводить несколько переменных.

echo -n "дите значения для переменных 'var2' и 'var3' (через пробел или табуляцию): "

read var2 var3

echo "var2 = $var2 var3 = $var3"

# Если было введено значение только одной переменной, то вторая останется "пустой".


exit 0

Если команде read не была передано ни одной переменной, то ввод будет осуществлен в переменную $REPLY.

Пример 11-3. Пример использования команды read без указания переменной для ввода

#!/bin/bash


echo


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

# Первый блок кода.

echo -n "Введите значение: "

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

Перейти на страницу:

Мендель Купер читать все книги автора по порядку

Мендель Купер - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


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

Отзывы читателей о книге Искусство программирования на языке сценариев командной оболочки, автор: Мендель Купер. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*