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

ЖАНРЫ

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

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

Шрифт:

Это встроенная команда 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%d\n" $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 "$@" >&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 "Введите значение: "

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