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

Книга "Sed & Awk" (авторы Dougherty и Robbins) дает полное и ясное представление о регулярных выражениях (см. раздел Литература).


18.2. Globbing -- Подстановка имен файлов

Bash, сам по себе, не распознает регулярные выражения. Но в сценариях можно использовать команды и утилиты, такие как sed и awk, которые прекрасно справляются с обработкой регулярных выражений.

Фактически, Bash может выполнять подстановку имен файлов, этот процесс называется "globbing", но при этом не используется стандартный набор регулярных выражений. Вместо этого, при выполнении подстановки имен файлов, производится распознавание и интерпретация шаблонных символов. В число интерпретируемых шаблонов входят символы * и ?, списки символов в квадратных скобках и некоторые специальные символы (например ^, используемый для выполнения операции отрицания). Применение шаблонных символов имеет ряд важных ограничений. Например, если имена файлов начинаются с точки (например так: .bashrc), то они не будут соответствовать шаблону, содержащему символ *[ 48 ]. Аналогично, символ ? в операции подстановки имен файлов имеет иной смысл, нежели в регулярных выражениях.

bash$ ls -l

total 2

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1

-rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh

-rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt


bash$ ls -l t?.sh

-rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh


bash$ ls -l [ab]*

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1


bash$ ls -l [a-c]*

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1


bash$ ls -l [^ab]*

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1

-rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh

-rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt


bash$ ls -l {b*,c*,*est*}

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1

-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1

-rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt


bash$ echo *

a.1 b.1 c.1 t2.sh test1.txt


bash$ echo t*

t2.sh test1.txt


Даже команда echo может интерпретировать шаблонные символы в именах файлов.

См. также Пример 10-4.


Глава 19. Подоболочки, или Subshells

Запуск сценария приводит к запуску дочернего командного интерпретатора. Который выполняет интерпретацию и исполнение списка команд, содержащихся в файле сценария, точно так же, как если бы они были введены из командной строки. Любой сценарий запускается как дочерний процесс родительской командной оболочки, той самой, которая выводит перед вами строку приглашения к вводу на консоли или в окне xterm.

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

Список команд в круглых скобках

( command1; command2; command3; ... )

Список команд, в круглых скобках, исполняется в подоболочке.

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

Пример 19-1. Область видимости переменных

#!/bin/bash

# subshell.sh


echo


outer_variable=Outer


(

inner_variable=Inner

echo "Дочерний процесс, \"inner_variable\" = $inner_variable"

echo "Дочерний процесс, \"outer\" = $outer_variable"

)


echo


if [ -z "$inner_variable" ]

then

echo "Переменная inner_variable не определена в родительской оболочке"

else

echo "Переменная inner_variable определена в родительской оболочке"

fi


echo "Родительский процесс, \"inner_variable\" = $inner_variable"

# Переменная $inner_variable не будет определена

# потому, что переменные, определенные в дочернем процессе,

# ведут себя как "локальные переменные".


echo


exit 0

См. также Пример 31-1.

+

Смена текущего каталога в дочернем процессе (подоболочке) не влечет за собой смену текущего каталога в родительской оболочке.

Пример 19-2. Личные настройки пользователей

#!/bin/bash

# allprofs.sh: вывод личных настроек (profiles) всех пользователей


# Автор: Heiner Steven

# С некоторыми изменениями, внесенными автором документа.


FILE=.bashrc # Файл настроек пользователя,

#+ в оригинальном сценарии называется ".profile".


for home in `awk -F: '{print $6}' /etc/passwd`

do

[ -d "$home" ] || continue # Перейти к следующей итерации, если нет домашнего каталога.

[ -r "$home" ] || continue # Перейти к следующей итерации, если не доступен для чтения.

(cd $home; [ -e $FILE ] && less $FILE)

done


Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT