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

на главную - закладки

Жанры

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

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

Шрифт:

# 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;; # ==> Вывод справочного сообщения.

Поделиться:
Популярные книги

Средневековая история. Тетралогия

Гончарова Галина Дмитриевна
Средневековая история
Фантастика:
фэнтези
попаданцы
9.16
рейтинг книги
Средневековая история. Тетралогия

Хозяйка Междуречья

Алеева Елена
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Хозяйка Междуречья

Назад в СССР 5

Дамиров Рафаэль
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Назад в СССР 5

Столичный доктор. Том II

Вязовский Алексей
2. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том II

Игрок, забравшийся на вершину. Том 8

Михалек Дмитрий Владимирович
8. Игрок, забравшийся на вершину
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Игрок, забравшийся на вершину. Том 8

Довлатов. Сонный лекарь

Голд Джон
1. Не вывожу
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Довлатов. Сонный лекарь

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9

Система Возвышения. Второй Том. Часть 1

Раздоров Николай
2. Система Возвышения
Фантастика:
фэнтези
7.92
рейтинг книги
Система Возвышения. Второй Том. Часть 1

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Князь Мещерский

Дроздов Анатолий Федорович
3. Зауряд-врач
Фантастика:
альтернативная история
8.35
рейтинг книги
Князь Мещерский

Совок 2

Агарев Вадим
2. Совок
Фантастика:
альтернативная история
7.61
рейтинг книги
Совок 2

Царь поневоле. Том 2

Распопов Дмитрий Викторович
5. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Царь поневоле. Том 2

Система Возвышения. (цикл 1-8) - Николай Раздоров

Раздоров Николай
Система Возвышения
Фантастика:
боевая фантастика
4.65
рейтинг книги
Система Возвышения. (цикл 1-8) - Николай Раздоров

Системный Нуб

Тактарин Ринат
1. Ловец душ
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Системный Нуб