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

Здесь есть возможность читать онлайн «Мендель Купер - Искусство программирования на языке сценариев командной оболочки» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Искусство программирования на языке сценариев командной оболочки»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Искусство программирования на языке сценариев командной оболочки», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

then # то поменять знак

let "dindex = 0 - $Days" # чтобы функция смогла вернуть полное значение.

else let "dindex = $Days"

fi

return $dindex

}

calculate_difference () # Разница между двумя датами.

{

let "diff = $1 - $2" # Глобальная переменная.

}

abs () # Абсолютное значение

{ # Используется глобальная переменная "value".

if [ "$1" -lt 0 ] # Если число отрицательное

then # то

let "value = 0 - $1" # изменить знак,

else # иначе

let "value = $1" # оставить как есть.

fi

}

if [ $# -ne "$ARGS" ] # Требуется два аргумента командной строки.

then

Param_Error

fi

Parse_Date $1

check_date $day $month $year # Проверка даты.

strip_leading_zero $day # Удалить ведущие нули

day=$? # в номере дня и/или месяца.

strip_leading_zero $month

month=$?

day_index $day $month $year

date1=$?

abs $date1 # Абсолютное значение

date1=$value

Parse_Date $2

check_date $day $month $year

strip_leading_zero $day

day=$?

strip_leading_zero $month

month=$?

day_index $day $month $year

date2=$?

abs $date2 # Абсолютное значение

date2=$value

calculate_difference $date1 $date2

abs $diff # Абсолютное значение

diff=$value

echo $diff

exit 0

# Сравните этот сценарий с реализацией формулы Гаусса на C

# http://buschencrew.hypermart.net/software/datedif

Пример A-9. Создание "словаря"

#!/bin/bash

# makedict.sh [создание словаря]

# Модификация сценария /usr/sbin/mkdict.

# Авторские права на оригинальный сценарий принадлежат Alec Muffett.

#

# Этот модифицированный вариант включен в документ на основе

#+ документа "LICENSE" из пакета "Crack"

#+ с которым распространяется оригинальный сценарий.

# Этот скрипт обрабатывает текстовые файлы и создает отсортированный список

#+ слов, найденных в этих файлах.

# Он может оказаться полезным для сборки словарей

#+ и проведения лексикографического анализа.

E_BADARGS=65

if [ ! -r "$1" ] # Необходим хотя бы один аргумент --

then #+ имя файла.

echo "Порядок использования: $0 имена_файлов"

exit $E_BADARGS

fi

# SORT="sort" # Необходимость задания ключей сортировки отпала.

#+ Изменено, по отношению к оригинальному сценарию.

cat $* | # Выдать содержимое файлов на stdout.

tr A-Z a-z | # Преобразовать в нижний регистр.

tr ' ' '\012' | # Новое: заменить пробелы символами перевода строки.

# tr -cd '\012[a-z][0-9]' | # В оригинальном сценарии: удалить все символы,

#+ которые не являются буквами или цифрами.

tr -c '\012a-z' '\012' | # Вместо удаления

#+ неалфавитно-цифровые символы заменяются на перевод строки.

sort |

uniq | # Удалить повторяющиеся слова.

grep -v '^#' | # Удалить строки, начинающиеся с "#".

grep -v '^$' # Удалить пустые строки.

exit 0

Пример A-10. Расчет индекса "созвучности"

#!/bin/bash

# soundex.sh: Расчет индекса "созвучности"

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

# Сценарий Soundex

# Автор

# Mendel Cooper

# thegrendel@theriver.com

# 23 Января 2002 г.

#

# Условия распространения: Public Domain.

#

# Несколько отличающаяся версия этого сценария была опубликована

#+ Эдом Шэфером (Ed Schaefer) в Июле 2002 года в колонке "Shell Corner"

#+ "Unix Review" on-line,

#+ http://www.unixreview.com/documents/uni1026336632258/

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

ARGCOUNT=1 # Требуется аргумент командной строки.

E_WRONGARGS=70

if [ $# -ne "$ARGCOUNT" ]

then

echo "Порядок использования: `basename $0` имя"

exit $E_WRONGARGS

fi

assign_value () # Присвоить числовые значения

{ #+ символам в имени.

val1=bfpv # 'b,f,p,v' = 1

val2=cgjkqsxz # 'c,g,j,k,q,s,x,z' = 2

val3=dt # и т.п.

val4=l

val5=mn

val6=r

# Попробуйте разобраться в том, что здесь происходит.

value=$( echo "$1" \

| tr -d wh \

| tr $val1 1 | tr $val2 2 | tr $val3 3 \

| tr $val4 4 | tr $val5 5 | tr $val6 6 \

| tr -s 123456 \

| tr -d aeiouy )

# Символам в имени присваиваются числовые значения.

# Удаляются повторяющиеся числа, если они не разделены гласными.

# Гласные игнорируются, если они не являются разделителями, которые удаляются в последнюю очередь.

# Символы 'w' и 'h' удаляются в первую очередь.

}

input_name="$1"

echo

echo "Имя = $input_name"

# Перевести все символы в имени в нижний регистр.

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

name=$( echo $input_name | tr A-Z a-z )

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

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

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

char_pos=0 # Начальная позиция в имени.

prefix0=${name:$char_pos:1}

prefix=`echo $prefix0 | tr a-z A-Z`

# Первую букву в имени -- в верхний регистр.

let "char_pos += 1" # Передвинуть "указатель" на один символ.

name1=${name:$char_pos}

# ++++++++++++++++++++++++++++ Исключение отдельных ситуаций +++++++++++++++++++++++++++++++

# Теперь мы передвинулись на один символ вправо.

# Если второй символ в имени совпадает с первым

#+ то его нужно отбросить.

# Кроме того, мы должны проверить -- не является ли первый символ

#+ гласной, 'w' или 'h'.

char1=`echo $prefix | tr A-Z a-z` # Первый символ -- в нижний регистр.

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Искусство программирования на языке сценариев командной оболочки» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Искусство программирования на языке сценариев командной оболочки» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x