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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

#

# возвращает количество символов в строке s.

#:end docstring:

###;;;autoload

function strlen ()

{

eval echo "\${#${1}}"

# ==> Возвращает длину переменной,

# ==> чье имя передается как аргумент.

}

#:docstring strspn:

# Порядок использования: strspn $s1 $s2

#

# Strspn возвращает максимальную длину сегмента в строке s1,

# который полностью состоит из символов строки s2.

#:end docstring:

###;;;autoload

function strspn ()

{

# Сброс содержимого переменной IFS позволяет обрабатывать пробелы как обычные символы.

local IFS=

local result="${1%%[!${2}]*}"

echo ${#result}

}

#:docstring strcspn:

# Порядок использования: strcspn $s1 $s2

#

# Strcspn возвращает максимальную длину сегмента в строке s1,

# который полностью не содержит символы из строки s2.

#:end docstring:

###;;;autoload

function strcspn ()

{

# Сброс содержимого переменной IFS позволяет обрабатывать пробелы как обычные символы.

local IFS=

local result="${1%%[${2}]*}"

echo ${#result}

}

#:docstring strstr:

# Порядок использования: strstr s1 s2

#

# Strstr выводит подстроку первого вхождения строки s2

# в строке s1, или ничего не выводит, если подстрока s2 в строке s1 не найдена.

# Если s2 содержит строку нулевой длины, то strstr выводит строку s1.

#:end docstring:

###;;;autoload

function strstr ()

{

# Если s2 -- строка нулевой длины, то вывести строку s1

[ ${#2} -eq 0 ] && { echo "$1" ; return 0; }

# не выводить ничего, если s2 не найдена в s1

case "$1" in

*$2*) ;;

*) return 1;;

esac

# использовать шаблон, для удаления всех несоответствий после s2 в s1

first=${1/$2*/}

# Затем удалить все несоответствия с начала строки

echo "${1##$first}"

}

#:docstring strtok:

# Порядок использования: strtok s1 s2

#

# Strtok рассматривает строку s1, как последовательность из 0, или более,

# лексем (токенов), разделенных символами строки s2

# При первом вызове (с непустым аргументом s1)

# выводит первую лексему на stdout.

# Функция запоминает свое положение в строке s1 от вызова к вызову,

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

# чтобы продолжить выделение лексем из строки s1.

# После вывода последней лексемы, все последующие вызовы будут выводить на stdout

# пустое значение. Строка-разделитель может изменяться от вызова к вызову.

#:end docstring:

###;;;autoload

function strtok ()

{

:

}

#:docstring strtrunc:

# Порядок использования: strtrunc $n $s1 {$s2} {$...}

#

# Используется многими функциями, такими как strncmp, чтобы отсечь "лишние" символы.

# Выводит первые n символов в каждой из строк s1 s2 ... на stdout.

#:end docstring:

###;;;autoload

function strtrunc ()

{

n=$1 ; shift

for z; do

echo "${z:0:$n}"

done

}

# provide string

# string.bash конец библиотеки

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

# ==> Все, что находится ниже, добавлено автором документа.

# ==> Чтобы этот сценарий можно было использовать как "библиотеку", необходимо

# ==> удалить все, что находится ниже и "source" этот файл в вашем сценарии.

# strcat

string0=one

string1=two

echo

echo "Проверка функции \"strcat\" :"

echo "Изначально \"string0\" = $string0"

echo "\"string1\" = $string1"

strcat string0 string1

echo "Теперь \"string0\" = $string0"

echo

# strlen

echo

echo "Проверка функции \"strlen\" :"

str=123456789

echo "\"str\" = $str"

echo -n "Длина строки \"str\" = "

strlen str

echo

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

# ---------

# Добавьте проверку остальных функций.

exit 0

Michael Zick предоставил очень сложный пример работы с массивами и утилитой md5sum, используемой для кодирования сведений о каталоге.

От переводчика:

К своему стыду вынужден признаться, что перевод комментариев оказался мне не "по зубам", поэтому оставляю этот сценарий без перевода.

Пример A-21. Directory information

#! /bin/bash

# directory-info.sh

# Parses and lists directory information.

# NOTE: Change lines 273 and 353 per "README" file.

# Michael Zick is the author of this script.

# Used here with his permission.

# Controls

# If overridden by command arguments, they must be in the order:

# Arg1: "Descriptor Directory"

# Arg2: "Exclude Paths"

# Arg3: "Exclude Directories"

#

# Environment Settings override Defaults.

# Command arguments override Environment Settings.

# Default location for content addressed file descriptors.

MD5UCFS=${1:-${MD5UCFS:-'/tmpfs/ucfs'}}

# Directory paths never to list or enter

declare -a \

EXCLUDE_PATHS=${2:-${EXCLUDE_PATHS:-'(/proc /dev /devfs /tmpfs)'}}

# Directories never to list or enter

declare -a \

EXCLUDE_DIRS=${3:-${EXCLUDE_DIRS:-'(ucfs lost+found tmp wtmp)'}}

# Files never to list or enter

declare -a \

EXCLUDE_FILES=${3:-${EXCLUDE_FILES:-'(core "Name with Spaces")'}}

# Here document used as a comment block.

: << LSfieldsDoc

# # # # # List Filesystem Directory Information # # # # #

#

# ListDirectory "FileGlob" "Field-Array-Name"

# or

# ListDirectory -of "FileGlob" "Field-Array-Filename"

# '-of' meaning 'output to filename'

# # # # #

String format description based on: ls (GNU fileutils) version 4.0.36

Produces a line (or more) formatted:

inode permissions hard-links owner group ...

32736 -rw------- 1 mszick mszick

size day month date hh:mm:ss year path

2756608 Sun Apr 20 08:53:06 2003 /home/mszick/core

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

Интервал:

Закладка:

Сделать

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

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


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

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

x