Книга: Искусство программирования на языке сценариев командной оболочки
Пример 11-1. 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 "$@" >&2
# Форматированный вывод аргументов на stderr.
echo
exit $E_BADDIR
}
cd $var || error $"Невозможно перейти в каталог %s." "$var"
# Спасибо S.C.
read
"Читает" значение переменной с устройства стандартного ввода -- stdin, в интерактивном режиме это означает клавиатуру. Ключ -a позволяет записывать значения в массивы (см. Пример 25-3).
- Пример 11-1. printf в действии
- Пример 11-2. Ввод значений переменных с помощью read
- Пример 11-3. Пример использования команды read без указания переменной для ввода
- Пример 11-4. Ввод многострочного текста с помощью read
- Пример 11-5. Обнаружение нажатия на курсорные клавиши
- Пример 11-6. Чтение командой read из файла через перенаправление
- Пример 11-7. Смена текущего каталога
- Пример 11-8. Команда let, арифметические операции.
- Пример 11-9. Демонстрация команды eval
- Пример 11-10. Принудительное завершение сеанса
- Пример 11-11. Шифрование по алгоритму "rot13"
- Пример 11-12. Замена имени переменной на ее значение, в исходном тексте программы на языке Perl, с помощью eval
- Пример 11-13. Установка значений аргументов с помощью команды set
- Пример 11-14. Изменение значений позиционных параметров (аргументов)
- Пример 11-15. "Сброс" переменной
- Пример 11-16. Передача переменных во вложенный сценарий awk, с помощью export
- Пример 11-17. Прием опций/аргументов, передаваемых сценарию, с помощью getopts
- Пример 11-18. "Подключение" внешнего файла
- Пример 11-19. Пример (бесполезный) сценария, который подключает себя самого.
- Пример 11-21. Сценарий, который запускает себя самого
- Пример 11-2. Ввод значений переменных с помощью read
- Пример 11-15. "Сброс" переменной
- Пример 11-10. Принудительное завершение сеанса
- Пример установочного скрипта
- Пример из практики
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы
- Пример 17-10. Блочный комментарий
- Примеры