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

Тут можно читать онлайн Мендель Купер - Искусство программирования на языке сценариев командной оболочки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Искусство программирования на языке сценариев командной оболочки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.7/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток, постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.

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

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

Интервал:

Закладка:

Сделать

# Два знака после запятой, чтобы показать доллары и центы.

echo

echo "ежемесячные выплаты = \$$payment" # Вывести знак "доллара" перед числом.

echo

exit 0

# Упражнения:

# 1) Добавьте возможность ввода суммы с точностью до цента.

# 2) Добавьте возможность ввода процентной ставки как в виде процентов, так и в виде десятичного числа -- доли целого.

# 3) Если вы действительно честолюбивы,

# добавьте в сценарий вывод полной таблицы помесячных выплат.

Пример 12-33. Перевод чисел из одной системы счисления в другую

:

##########################################################################

# Shellscript: base.sh - вывод чисел в разных системах счисления (Bourne Shell)

# Author : Heiner Steven (heiner.steven@odn.de)

# Date : 07-03-95

# Category : Desktop

# $Id: base.sh,v 1.2 2000/02/06 19:55:35 heiner Exp $

##########################################################################

# Description

#

# Changes

# 21-03-95 stv исправлена ошибка, возникающая при вводе числа 0xb (0.2)

##########################################################################

# ==> Используется в данном документе с разрешения автора.

# ==> Комментарии добавлены автором документа.

NOARGS=65

PN=`basename "$0"` # Имя программы

VER=`echo '$Revision: 1.2 $' | cut -d' ' -f2` # ==> VER=1.2

Usage () {

echo "$PN - вывод чисел в различных системах счисления, $VER (stv '95)

Порядок использования: $PN [number ...]

Если число не задано, то производится ввод со stdin.

Число может быть:

двоичное должно начинаться с комбинации символов 0b (например 0b1100)

восьмеричное должно начинаться с 0 (например 014)

шестнадцатиричное должно начинаться с комбинации символов 0x (например 0xc)

десятичное в любом другом случае (например 12)" >&2

exit $NOARGS

} # ==> Функция вывода сообщения о порядке использования.

Msg () {

for i # ==> [список] параметров опущен.

do echo "$PN: $i" >&2

done

}

Fatal () { Msg "$@"; exit 66; }

PrintBases () {

# Определение системы счисления

for i # ==> [список] параметров опущен...

do # ==> поэтому работает с аргументами командной строки.

case "$i" in

0b*) ibase=2;; # двоичная

0x*|[a-f]*|[A-F]*) ibase=16;; # шестнадцатиричная

0*) ibase=8;; # восьмеричная

[1-9]*) ibase=10;; # десятичная

*)

Msg "Ошибка в числе $i - число проигнорировано"

continue;;

esac

# Удалить префикс и преобразовать шестнадцатиричные цифры в верхний регистр (этого требует bc)

number=`echo "$i" | sed -e 's:^0[bBxX]::' | tr '[a-f]' '[A-F]'`

# ==> вместо "/", здесь используется символ ":" как разделитель для sed.

# Преобразование в десятичную систему счисления

dec=`echo "ibase=$ibase; $number" | bc` # ==> 'bc' используется как калькулятор.

case "$dec" in

[0-9]*) ;; # все в порядке

*) continue;; # ошибка: игнорировать

esac

# Напечатать все преобразования в одну строку.

# ==> 'вложенный документ' -- список команд для 'bc'.

echo `bc <

obase=16; "hex="; $dec

obase=10; "dec="; $dec

obase=8; "oct="; $dec

obase=2; "bin="; $dec

!

` | sed -e 's: : :g'

done

}

while [ $# -gt 0 ]

do

case "$1" in

--) shift; break;;

-h) Usage;; # ==> Вывод справочного сообщения.

-*) Usage;;

*) break;; # первое число

esac # ==> Хорошо бы расширить анализ вводимых символов.

shift

done

if [ $# -gt 0 ]

then

PrintBases "$@"

else # чтение со stdin

while read line

do

PrintBases $line

done

fi

Один из вариантов вызова bc-- использование вложенного документа, внедряемого в блок с подстановкой команд. Это особенно актуально, когда сценарий должен передать bcзначительный по объему список команд и аргументов.

variable=`bc << LIMIT_STRING

options

statements

operations

LIMIT_STRING

`

...или...

variable=$(bc << LIMIT_STRING

options

statements

operations

LIMIT_STRING

)

Пример 12-34. Пример взаимодействия bc со "встроенным документом"

#!/bin/bash

# Комбинирование 'bc' с

# 'вложенным документом'.

var1=`bc << EOF

18.33 * 19.78

EOF

`

echo $var1 # 362.56

# запись $( ... ) тоже работает.

v1=23.53

v2=17.881

v3=83.501

v4=171.63

var2=$(bc << EOF

scale = 4

a = ( $v1 + $v2 )

b = ( $v3 * $v4 )

a * b + 15.35

EOF

)

echo $var2 # 593487.8452

var3=$(bc -l << EOF

scale = 9

s ( 1.7 )

EOF

)

# Возвращается значение синуса от 1.7 радиана.

# Ключом "-l" вызывается математическая библиотека 'bc'.

echo $var3 # .991664810

# Попробуем функции...

hyp= # Объявление глобальной переменной.

hypotenuse () # Расчет гипотенузы прямоугольного треугольника.

{

hyp=$(bc -l << EOF

scale = 9

sqrt ( $1 * $1 + $2 * $2 )

EOF

)

# К сожалению, функции Bash не могут возвращать числа с плавающей запятой.

}

hypotenuse 3.68 7.31

echo "гипотенуза = $hyp" # 8.184039344

exit 0

Пример 12-35. Вычисление числа "пи"

#!/bin/bash

# cannon.sh: Аппроксимация числа "пи".

# Это очень простой вариант реализации метода "Monte Carlo",

#+ математическое моделирование событий реальной жизни,

#+ для эмуляции случайного события используются псевдослучайные числа.

# Допустим, что мы располагаем картой квадратного участка поверхности со стороной квадрата 10000 единиц.

# На этом участке, в центре, находится совершенно круглое озеро,

#+ с диаметром в 10000 единиц.

# Т.е. озеро покрывает почти всю карту, кроме ее углов.

# (Фактически -- это квадрат со вписанным кругом.)

#

# Пусть по этому участку ведется стрельба железными ядрами из древней пушки

# Все ядра падают где-то в пределах данного участка,

#+ т.е. либо в озеро, либо на сушу, по углам участка.

# Поскольку озеро покрывает большую часть участка,

#+ то большинство ядер будет падать в воду.

# Незначительная часть ядер будет падать на твердую почву.

#

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

#+ то отношение попаданий в воду к общему числу выстрелов будет примерно равно

#+ значению PI/4.

#

# По той простой причине, что стрельба фактически ведется только

#+ по правому верхнему квадранту карты.

# (Предыдущее описание было несколько упрощено.)

#

# Теоретически, чем больше будет произведено выстрелов, тем точнее будет результат.

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

#+ в которых доступны операции с плавающей запятой, имеет некоторые ограничения.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


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

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




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


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


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x