КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Регулярные выражения
Практическое задание Комментарии Условные операторы if список1; then список2; [ elif список3; then список4; ] ... [ else список5; ] fi Выполняется список1 если его код завершения ноль, то выполняется список2. Иначе выполняются поочередно все конструкции elif. Если список3 завершается с кодом ноль, то выполняется список4 и команда завершается. В противном случае выполняется список5. Код завершения равен коду завершения последней команды или нулю если ни одно из условий не было выполнено. case слово in [(] шаблон [ | шаблон ]...) список;; ... esac Команда сначала раскрывает слово и ставит его в соответствие каждому шаблону. Когда совпадение найдено выполняется соответствующий список. После первого совпадения попытки найти соответствующий шаблон прекращаются. Код завершения равен нулю если найти совпадение не удалось и коду завершения последней выполненой команды в противном случае. Для проверки соответствия слова шаблону используются те же правила, что и для имен файлов. Для выполнения команд по условию можно, также, использовать списки: [ -f $1 ] || { echo ’File not exist!’; exit 1;} [! -f $2 ] && cp $1 $2 [[ -x /bin/sh || -x /bin/bash ]] \ && echo Found || echo Not found В первой строке проверяется существование файла указанного первым аргументом сценария. Если файла не существует, то выводится сообщение и сценарий завершается. Во второй строке проверяется отсутствие файла указанного вторым аргументом. В последней строке проверяется существование хотя бы одного из файлов sh и bash и выводится соответствующее сообщение. В неинтерактивном режиме оболочка воспринимает слова начинающиеся с символа # и все остальные символы до конца строки как комментарии и игнорирует их. В интерактивном режиме комментарии, как правило, не допускаются. 1. Проанализируйте файл /home/labs/back.sh 2. В подкаталоге bin создайте файл case.sh: case $1 in start) if [ -f /tmp/back$UID.pid ]; then echo Alredy started else /home/labs/back.sh >/tmp/back$UID.pid & \ echo Started: ‘cat /tmp/back$UID.pid‘ fi;; stop) if [ -f /tmp/back$UID.pid ]; then \ kill -kill ‘cat /tmp/back$UID.pid‘ && echo Killed rm /tmp/back$UID.pid else echo Not started fi;; status) [ -f /tmp/back$UID.pid ] \ && echo Running: ‘cat /tmp/back$UID.pid‘ \ || echo Not running;; *) echo "usage: case.sh {start|stop|status}" esac 3. Выполните команду export UID 4. Запустите сценарий без аргументов и последовательно с аргументами status, start, status, start, stop, status, stop. Результат сохраните в файле отчета. 5. В подкаталоге bin создайте файл calc.sh: res=$1 shift while [[ $# -ge 2 ]]; do res=$(($res$1$2)) shift 2 done echo $res 6. Запустите сценарий следующими командами: a) calc.sh 1 + 2 \* 3 + 3 / 4] b) calc.sh 1 + 2 \* 3 c) calc.sh 1 + 2\*3 d) calc.sh 1+2
7. Объясните почему различается результат в случаях b) и c). 8. Исправьте сценарий так, чтобы в случае d) он выдавал результат 3. 9. Напишите сценарий summ.sh выводящий сумму своих аргументов если первый аргумент +, произведение если первый аргумент и сообщение Usage: summ.sh +|* arguments... в противном случае. Например: bash-2.04$ summ + 4 8 3 bash-2.04$ summ \* 4 2 3
Лабораторная работа № 9 Базовые регулярные выражения. Редактор sed. Регулярные выражения предоставляют механизм для выбора определенных строк из множества заданных. Регулярные выражения имеют контекстнонезависимый синтаксис, позволяющий им обрабатывать различные наборы символов с различными правилами сортировки опираясь на текущие установки локали. Большинство приложений поддерживает базовые регулярные выражения (BRE). Некоторые приложения поддерживают расширенные регулярные выражения (ERE). Далее в этом разделе будут использоваться следующие термины: Полное регулярное выражение — объединенное множество из одного или более BRE (ERE) определяющее шаблон для выбора строк. Соответствие. Последовательность из нуля или более символов называется соответствующей BRE или ERE, если символы в последовательности соответствуют тем, которые указаны в шаблоне.
Дата добавления: 2014-12-07; Просмотров: 313; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |