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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

stringZ=abcABC123ABCabc

# 0123456789.....

# Индексация начинается с 0.

echo ${stringZ:0} # abcABC123ABCabc

echo ${stringZ:1} # bcABC123ABCabc

echo ${stringZ:7} # 23ABCabc

echo ${stringZ:7:3} # 23A

# Извлекает 3 символа.

# Возможна ли индексация с "правой" стороны строки?

echo ${stringZ:-4} # abcABC123ABCabc

# По-умолчанию выводится полная строка.

# Однако . . .

echo ${stringZ:(-4)} # Cabc

echo ${stringZ: -4} # Cabc

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

# Круглые скобки или дополнительный пробел "экранируют" параметр позиции.

# Спасибо Dan Jacobson, за разъяснения.

Если $string -- "*" или "@", то извлекается до $length позиционных параметров (аргументов), начиная с $position .

echo ${*:2} # Вывод 2-го и последующих аргументов.

echo ${@:2} # То же самое.

echo ${*:2:3} # Вывод 3-х аргументов, начиная со 2-го.

expr substr $string $position $length

Извлекает $length символов из $string , начиная с позиции $position .

stringZ=abcABC123ABCabc

# 123456789......

# Индексация начинается с 1.

echo `expr substr $stringZ 1 2` # ab

echo `expr substr $stringZ 4 3` # ABC

expr match "$string" '\($substring\)'

Находит и извлекает первое совпадение $substring в $string , где $substring -- это регулярное выражение.

expr "$string" : '\($substring\)'

Находит и извлекает первое совпадение $substring в $string , где $substring -- это регулярное выражение.

stringZ=abcABC123ABCabc

# =======

echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1

echo `expr "$stringZ" : '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1

echo `expr "$stringZ" : '\(.......\)'` # abcABC1

# Все вышеприведенные операции дают один и тот же результат.

expr match "$string" '.*\($substring\)'

Находит и извлекает первое совпадение $substring в $string , где $substring -- это регулярное выражение. Поиск начинается с конца $string .

expr "$string" : '.*\($substring\)'

Находит и извлекает первое совпадение $substring в $string , где $substring -- это регулярное выражение. Поиск начинается с конца $string .

stringZ=abcABC123ABCabc

# ======

echo `expr match "$stringZ" '.*\([A-C][A-C][A-C][a-c]*\)'` # ABCabc

echo `expr "$stringZ" : '.*\(......\)'` # ABCabc

Удаление части строки

${string#substring}

Удаление самой короткой, из найденных, подстроки $substring в строке $string . Поиск ведется с начала строки

${string##substring}

Удаление самой длинной, из найденных, подстроки $substring в строке $string . Поиск ведется с начала строки

stringZ=abcABC123ABCabc

# |----|

# |----------|

echo ${stringZ#a*C} # 123ABCabc

# Удаление самой короткой подстроки.

echo ${stringZ##a*C} # abc

# Удаление самой длинной подстроки.

${string%substring}

Удаление самой короткой, из найденных, подстроки $substring в строке $string . Поиск ведется с конца строки

${string%%substring}

Удаление самой длинной, из найденных, подстроки $substring в строке $string . Поиск ведется с конца строки

stringZ=abcABC123ABCabc

# ||

# |------------|

echo ${stringZ%b*c} # abcABC123ABCa

# Удаляется самое короткое совпадение. Поиск ведется с конца $stringZ.

echo ${stringZ%%b*c} # a

# Удаляется самое длинное совпадение. Поиск ведется с конца $stringZ.

Пример 9-11. Преобразование графических файлов из одного формата в другой, с изменением имени файла

#!/bin/bash

# cvt.sh:

# Преобразование всех файлов в заданном каталоге,

#+ из графического формата MacPaint, в формат "pbm".

# Используется утилита "macptopbm", входящая в состав пакета "netpbm",

#+ который сопровождается Brian Henderson (bryanh@giraffe-data.com).

# Netpbm -- стандартный пакет для большинства дистрибутивов Linux.

OPERATION=macptopbm

SUFFIX=pbm # Новое расширение файла.

if [ -n "$1" ]

then

directory=$1 # Если каталог задан в командной строке при вызове сценария

else

directory=$PWD # Иначе просматривается текущий каталог.

fi

# Все файлы в каталоге, имеющие расширение ".mac", считаются файлами

#+ формата MacPaint.

for file in $directory/* # Подстановка имен файлов.

do

filename=${file%.*c} # Удалить расширение ".mac" из имени файла

#+ ( с шаблоном '.*c' совпадают все подстроки

#+ начинающиеся с '.' и заканчивающиеся 'c',

$OPERATION $file > "$filename.$SUFFIX"

# Преобразование с перенаправлением в файл с новым именем

rm -f $file # Удаление оригинального файла после преобразования.

echo "$filename.$SUFFIX" # Вывод на stdout.

done

exit 0

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

# --------

# Сейчас этот сценарий конвертирует *все* файлы в каталоге

# Измените его так, чтобы он конвертировал *только* те файлы,

#+ которые имеют расширение ".mac".

Замена подстроки

${string/substring/replacement}

Замещает первое вхождение $substring строкой $replacement .

${string//substring/replacement}

Замещает все вхождения $substring строкой $replacement .

stringZ=abcABC123ABCabc

echo ${stringZ/abc/xyz} # xyzABC123ABCabc

# Замена первой подстроки 'abc' строкой 'xyz'.

echo ${stringZ//abc/xyz} # xyzABC123ABCxyz

# Замена всех подстрок 'abc' строкой 'xyz'.

${string/#substring/replacement}

Подстановка строки $replacement вместо $substring . Поиск ведется с начала строки $string .

${string/%substring/replacement}

Подстановка строки $replacement вместо $substring . Поиск ведется с конца строки $string .

stringZ=abcABC123ABCabc

echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc

# Поиск ведется с начала строки

echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ

# Поиск ведется с конца строки

9.2.1. Использование awk при работе со строками

В качестве альтернативы, Bash-скрипты могут использовать средства awk при работе со строками.

Пример 9-12. Альтернативный способ извлечения подстрок

#!/bin/bash

# substring-extraction.sh

String=23skidoo1

# 012345678 Bash

# 123456789 awk

# Обратите внимание на различия в индексации:

# Bash начинает индексацию с '0'.

# Awk начинает индексацию с '1'.

echo ${String:2:4} # с 3 позиции (0-1-2), 4 символа

# skid

# В эквивалент в awk: substr(string,pos,length).

echo | awk '

{ print substr("'"${String}"'",3,4) # skid

}

'

# Передача пустого "echo" по каналу в awk, означает фиктивный ввод,

#+ делая, тем самым, ненужным предоставление имени файла.

exit 0

9.2.2. Дальнейшее обсуждение

Дополнительную информацию, по работе со строками, вы найдете в разделе Section 9.3 и в секции, посвященной команде expr. Примеры сценариев:

1. Пример 12-6

2. Пример 9-15

3. Пример 9-16

4. Пример 9-17

5. Пример 9-19

9.3. Подстановка параметров

Работа с переменными и/или подстановка их значений

${parameter}

То же самое, что и $parameter , т.е. значение переменной parameter . В отдельных случаях, при возникновении неоднозначности интерпретации, корректно будет работать только такая форма записи: ${parameter} .

Может использоваться для конкатенации (слияния) строковых переменных.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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