Реферат: Интерпретатор командного языка shell - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Интерпретатор командного языка shell

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 373 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

Интерпретатор командного языка shell 1. Основные по нятия языка shell 1.1. Ввод-вывод Три направления ввода-вывода являются выделенными - стандартный ввод , стандартный вывод и стандартный протоко л . Как правило , команды берут исходные дан ные из стандартного ввода и помещают резу льтаты в стандартный вывод . Стандартные ввод , вывод и протокол можно переназначить . Обозначение < <имя файла > служит для пер еназначения стандартного ввода (дескриптор файла 0), > <имя файла > для стандартного вывода (дескриптор файла 1); << <стро ка > ввод происходит со с тандартного ввода , пока не встр етится указанная <строка > или конец файла , >> <имя файла > для стандартного вывода ; если файл существует , то выводима я информация добавляется к конец этого фа йла , <& <цифр а > в качестве ста ндартного ввода об (r )является файл , асс оциированный с дескриптором <цифра >; аналогично для стандартного вывода >& <цифр а > <&- и >&- закрывают соответс твенно стандартный ввод и вывод . Если любой из этих конструкций предше ствует цифра , то с указанным файлом бу дет ассоциирован дескриптор , равный указа нной цифре , вместо 0 и 1 по умолчанию . Наприм ер , 2 > <имя файла > для стандартного протокола используется дескриптор 2, а 2 >& 1 ассоциирует дескри птор 2 с файлом , ассоциированным с дескриптором 1. ... 2>protocol переназначает стан дартный протокол (дескриптор 2) в файл по им ени protocol. Чтобы переназначить стандартный протокол туда же , куда уже назначен стандартный выв од , следует употребить конструкцию ... 2>&1 Важен пор я док переназначения : shell производит переназначение сл ева направо по указанному списку . Так , 1 > xxx 2 >& 1 сначала ассоциируе т дескриптор 1 с файлом xxx, а затем дескрипто р 2 с 1, т.е . тоже с xxx. А 2 >& 1 1 > xxx ассоциирует дескри птор 2 с терминалом , а 1 - с файлом xxx. Можно переназначить системный ввод на текущий файл : isql - - < 1.2. Синхронное и асинхронное выполнение команд Обычно shell ждет завершения выполнения команды . Однако имеется возможность запустить задачу в асинхронном режиме , т.е . без ожидания ее завершен ия . Для этого после команды (после всех ее аргументов и указаний о переназначении ввода-вывода ) надо поставить знак &. При это м по умолчанию стандартный ввод команды н азначается на пустой файл /dev/null. Пример : созда ть файл primer можно по команде echo > primer Еще пример : зап устить программу prog в асинхронном режиме , чтобы не надо было дожидаться его завершения , засечь время выполнения , результаты программы направить в файл prog.res, данные о времени выполн ения - в файл prog.tim. time prog > prog.res 2> prog.tim & 1.3. Конвейер Конвейер - последов ательность команд , разделенных знаком |. Если по сле конвейера стоит ; shell ждет его завершения . Если & - то не ждет . Роль ; может играть конец строки . Смы сл конвейера в том , что стандартный вывод одной команды замы кается на стандартный ввод другой . Пример конвейера - подсчитать число об (r)ектных файлов в текущем каталоге . ls *.o | wc -l 1.4. Метасимволы , г енерация имен файлов Метасимволы - симво лы, имеющие специальное значение для инт ерпретатора : ? * ; & ( ) | ^ < > <п робел > <табуляция > <возврат _каретки > Однако каждый из этих символов может представлять самого себя , если перед ним стоит \ . Все символы , заключенные между кавычками ' и ', предста вляют самих себя . Между двойными кавыч ками (") выполняются подстановки команд (см п . 2.2) и параметров (см . п . 2.3), а символы \ , `," и $ могут экранироваться предшествующим символом \. После всех подстановок в каждом слове команды ищутся символы *,?, и [ . Если находится хотя бы один из них , то это слово рассматривается как шаблон имен фа йлов и заменяется именами файлов , удовлетворя ющих данному шаблону (в алфавитном порядке ). Если ни одно имя файла не удовлетворяе т шаблону , то он остается неизменным . Знач е ния указанных символов : * любая строка , включая и пус тую ? один любой символ [...] любой из указанны х между ними символов . Пара символов , разд еленных знаком -, означает любой символ , который находится между ними , включая и их са мих . Если первым сим волом после "[" идет "!", то указанные символы не должны входить в имя файла 2. Синтаксис я зыка shell 2.1. Комментарии Строки , начинающие ся с #, трактуются как комментарии . 2.2. Подстановка ре зультатов выполнения команд Выражения можно заключать в обр атные кавычки (`). Такие выражения вычисляются в месте использования . Они могут быть , например , частью строк . Пример . Пусть параметром макрокоманды является имя файла с расширением .for. Требуется удалить одноименный файл с расширением .err. name= `ena -n $1` rm -f $ name .err Значение , полученн ое в результате выполнения команды ena -n $1 присваивается пере менной name. Фигурные скобки использованы для выд еления аргумента операции перехода от имени к значению . Без них .err приклеилась бы к и мени . 2.3. Переменные и подстановка их значений Все переменные в языке shell - текстовые . Их имена должны на чинаться с буквы и состоять из латинских букв , цифр и знака подчеркивания (_). Чтобы воспользоваться значением переменной , надо п еред ней поставить символ $. Использование значения переменной называется подстановкой . Различается два класса переменных : позици онные и с именем . Позиционные переменные - это аргументы командных файлов , их именами служат цифры : $0 - имя команды , $1 - первый аргумен т и т.д . Значения позиционным переменным могут быть присвоены и командой set (см . Специальные команды ). Пример . После вызова прог раммы на shellе , хранящейся в файле ficofl: ficofl -d / \*.for значением $0 будет ficofl, $1 - -d, $2 - /, $3 - *.for, значен ия остальных позиционных пе ременных будут пустыми строками . Заметим , что если бы символ * при вызове ficofl не был экранирован , в качестве аргументов передались бы имена всех фортранных файлов текущей директории . Еще две переменные хранят командную с троку за исключением имени команды : $@ экв ивалентно $1 $2 ..., а $* - "$1 $2 ...". Начальные значения переменным с именем могут быть установлены следующи м образом : <имя >=<значение > [ <имя >=<значение > ] ... Не может быть одновременно функции (см . Управляющие конструкции ) и переме нной с одинаковыми именами . Для подстановки значений переменных возможны также следующие конструкции : $ <пере менная > если значение < переменной > определено , то оно подставляется . С кобки при меняются лишь если за <переме нной > следует символ , который без скобок п риклеится к имени . $ <пере менная >:-<слово > если <переменная > определена и не является пустой строкой , то подставляется ее значение ; иначе подстав ляется <слово >. $ <пе ременная >:=<слово > если <переменная > не определена или является пустой строкой , ей присваивается значение <слово >; после э того подставляется ее значение . $ <пере менная >:?<слово > если <переменная > определена и не является пустой строкой , то подст авляется ее значение ; иначе на стандартный вывод выводится <слово > и выполнение shellа завершается . Если <слово > опущ ено , то выдается сообщение "parameter null or not set". $ <пере менная >:+<слово > если <переменная > определена и не является пустой стро кой , то подставляется <слово >; иначе подставляет ся пустая строка . Пример : если переменная d не определена или является пустой строкой , то выполняется команда pwd echo $ d:-`pwd` Следующие переменн ые автоматически устанавливаются shell'ом : # количество позиционных параметров (десятичное ) - флаги , указанные при запуске shellа или командой set ? десятичное значение , возвращенное предыдущей синхронно выполненной командой $ номер текущего пр оцесса ! номер последнего асинхронного про цесса @ эквивалентно $1 $2 $3 ... * эквивалентно "$1 $2 $3 ..." Напомним : чтобы получить значения этих переменных , перед ни ми нужно поставить знак $. Пример : выдать но мер текущего процесса : echo $$ 2.4. Специальные пе ременные Shell'ом испо льзуются следующие специальные переменные : HOME директория , в которую пользоват ель попадает при входе в систему или при выполнении команды cd без аргументов PATH список полных имен каталогов , в которых ищется файл при указании е го неполного имени . P S1 основная строка приглаш ения (по умолчанию $) PS2 дополнительная строка приглашени я (по умолчанию >); в интерактивном режиме пе ред вводом команды shell'ом выводится основная строка приглашения. Если нажата клавиша new_line, но для завершения команды требуется дальн ейший ввод , то выводится дополнительная строк а приглашения IFS последовательность символов , явля ющихся разделителями в командной строке (по умолчанию это <пробел >, <табуляция > и <возврат _каретки >) 3. Управляющие конструкции Простая ко манда - это последовательность слов , разделенная пробелами . Первое слово является именем ком анды , которая будет выполняться , а остальные будут переданы ей как аргументы . Имя ко манды передается ей как аргумент номер 0 (т. е . имя команды является значением $0 ). Зн ачение , возвращаемое простой командой - это ее статус завершения , если она завершилась н ормально , или (восьмеричное ) 200+статус , если она завершилась аварийно . Список - это последовательность одного или нескольких конвейеров , разделенных символами ;, &, && или || и быть может заканчивающаяся символом ; или &. Из четырех указанных операци й ; и & имеют равные приоритеты , меньшие , чем у && и ||. Приоритеты последних также равны между собой . Символ ; означает , что конвейеры будут выполняться последовател ь но , а & - параллельно . Операция && (||) означает , что сп исок , следующий за ней будет выполняться л ишь в том случае , если код завершения предыдущего конвейера нулевой (ненулевой ). Команда - это либо простая команда , либ о одна из управляющих конструкций . Ко д ом завершения команды является код завершения ее последней простой команды . 3.1. Цикл ДЛЯ for <пере менная > [ in <набор > ] do <список > done Если часть in <на бор > опущена , то это означает in "$@" ( то есть in $1 $2 ... $n). Пример . Вывести на экран все форт ранные файлы текущей библиотеки : for f in *.for do cat $f done 3.2. Оператор выбор а case $<пере менная > in <шаблон > | <шаблон >... ) <список > ;; . . . esac Оператор выбора выполняет <список >, соответствующий первому <шабл ону >, которому удовлетворяет <переменная >. Форма шаблона та же , что и используемая для генерации имен файлов . Часть | шаблон ... может отсутствовать . Пример . Определить флаги и о ткомпи лировать все указанные файлы . # иници ализировать флаг flag= # повторять для каждого аргумента for a do case $a in # об (r)единить флаги , разделив их пробелами -[ocSO]) flag=$flag' ' $a ;; -*) echo 'unknown flag $a' ;; # компилировать каждый исходный файл и сбросить флаги *.c) cc $flag $a; flag= ;; *.s) as $flag $a; flag= ;; *.f) f77 $flag $a; flag= ;; # неверный аргумент *) echo 'unexpected argument $a' ;; esac done 3.3. Условный опера тор. if <спис ок 1> then <список 2> [ elif <список 3> then <список 4> ] . . . [ else <список 5> ] fi Выполняется <списо к 1> и , если код его завершения 0, то выпол няется <список 2>, иначе - <список 3> и , если и его код завершения 0, то выполняется <список 4>. Если же это не так , то выполняется <список 5>. Части elif и else могут отсутствовать . 3.4. Цикл ПОКА while <спис ок 1> do <список 2> done До тех пор , пока код завершения последней команды <спис ка 1> есть 0, выполняются команды <списка 2>. При замене служебного слова while на until услов ие выхода из цикла меняется на противоположно е . В качестве одной из команд <списка 1> может быть команда true (false). По этой команде не выполняется никаких действий , а код за вершения устанавливается 0 (-1). Эти команды применяют ся для организации бесконе чных циклов . Выход из такого цикла можно осуществить лишь по команде break (см . Специальные команды ). 3.5. Функции <имя > () <список >; Определяется функц ия с именем <имя >. Тело функции - <список >, заключенный между и . 3.6. Зарезервированные слова Следующие слова являются зарезервированными : if then else elif fi case in esac for while until do done 3.7. Специальные ко манды Как правило , дл я выполнения каждо й команды shell порождает отдельный процесс . Специальные команды отличают ся тем , что они встроены в shell и выполня ются в рамках текущего процесса . : Пустая команда . Возвращает нуле вой код завершения . . file Shell читает и выполняет команды из файла file, затем завершается ; пр и поиске file используется список поиска $PATH. break [n] Выход из внутреннего for или while цикла ; если указано n, то выход из n внутренних циклов . continue [n] Перейти к следующей ит ерации внутреннего for или while цикла ; если ук азано n, то переход к следующей итерации n-ог о цикла . cd [ <аргумент > ] Сменить текущую д иректорию на директорию <аргумент >. По умолчани ю используется значение HOME. echo [ <арг > ... ] Выводит свои аргумен ты в стандартный вывод , разделяя их пробелами . eval [ <арг > ... ] Аргументы читаются , к ак если бы они поступали из стандартного ввода и рассматриваются как команды , кото рые тут же и выполняются . exec [ <арг > ... ] Аргументы рассматриваютс я как команды shell'а и тут же выполняются , но п ри этом не создается нового процесса . В качестве аргументов могут быт ь указаны направления ввода-вывода и , если нет никаких других аргументов , то будет и зменено лишь направление ввода-вывода текущей программы . exit [ n ] Завершение выполнения shell'а с кодом завершения n. Если n опущено , т о кодом завершения будет код завершения п оследней выполненной команды (конец файла так же приводит к завершению выполнения ). export [ <переменная > ... ] Данные переменны е отмечаются для автоматического экспорта в окру жение (см . Окружение ) выполняемых команд . Если аргументы не указаны , то выво дится список всех экспортируемых переменных . Имена функций не могут экспортироваться . hash [ -r ] [ <команда > ... ] Для каждой из указанных команд определяется и запоминается пу ть поиска . Опция -r удаляет все з апомненные данные . Если не указан ни один аргумент , то выводится информация о запом ненных командах : hits - количество обращений shell'а к данной команде ; cost - объем работы для обнару жения команды в списке поиска ; command - полное имя команды . В некоторых сит уациях происходит перевычисление запомненных дан ных , что отмечается значком * в поле hits. pwd Выводит имя текущей директории . read [ <переменная > ... ] Читается из станд артного ввода одна строка ; первое ее слово присваивается первой переменной , второе - второй и т.д ., причем все оставшиеся сло ва присваиваются последней переменной . readonly [ <переменная > ... ] Запрещается изме нение значений указанных переменных . Если арг умент не указан , то выводится информаци я обо всех переменных типа readonly. return [ n ] Выход из функции с кодом завершения n. Если n опущено , то кодом завершен ия будет код завершения последней выполненной команды . set [ --aefkntuvx [ <арг > ... ] ] Команда устанавливает следующие режимы : -a отметить переменные , которые бы ли изменены или созданы , как переменные ок ружения (см . Окружение ) -e если код завершения команды ненулевой , то немедл енно завершить выполнение shell'а -f запретить генерацию имен файло в -k все переменные с именем помещаются в окруже ние команды , а не только те , что предше ствуют имени команды (см . Окружение ) -n читать команды , но не выпол нять их -t заверше ние shell'а после ввода и выполнения одной команды -u при подстановке рассматривать неустанов ленные пе ременные как ошибки -v вывести вводимые строки сразу после их ввода -x вывести команды и их аргументы перед их выпо лнением -- не и зменяет флаги , полезен для присваивания позиц ионным переменным новых значений . При указании + вместо - каждый из флагов устанавливает противоположный режим . Набор текущих флагов есть значение переменной $-. <арг > - это значения , которые будут присвое ны позиционным переменным $1, $2 и т.д . Если все аргументы опущены , выводятся значения всех переменных . shift [ n ] Позиционные переменны е , начиная с $(n+1), переименовываются в $1 и т.д . По умолчанию n=1. test вычисляет условные выражения (см . Дополнительные сведения . Test ) trap [ <арг > ] [ n ] ... Команда <арг > будет выполнена , когда shell получит сигнал n (см . Сигналы ). (Надо заметить , что <арг > проверяется при установке прерывания и при получении сигнала ). Команды выполняются по порядку ном еров сигналов . Любая попытка установить сигна л , игнорируемый данным процессом , не обрабатыв ается . Попытка пр е рывания по сигна лу 11 (segmentation violation) приводит к ошибке . Если <арг > опу щен , то все прерывания устанавливаются в и х начальные значения . Если <арг > есть пуста я строка , то этот сигнал игнорируется shell'ом и вызываемыми им программами . Если n=0, то < арг > выполняется при выходе из shell'а . Trap без аргументов выводит список команд , связанных с каждым сигналом . type [ <имя > ... ] Для каждого имени показывает , как оно будет интерпретироваться при использовании в качестве имени команды : как внутренняя команда shell'а , как имя файла или же такого файла нет вообще . ulimit [ -f ] [ n ] Устанавливает р азмер файла в n блоков ; -f - устанавливает размер файла , который может быть записан процесс ом-потомком (читать можно любые файлы ). Без аргументов - выводит текущий размер . umask [ nnn ] Пользовательская маска соз дания файлов изменяется на nnn. Если nnn опущено , то выводится текущее значение маски . Пример : после команды umask 755 будут создаваться файлы , которые владелец сможет читать , писать и выполнять , а все остальные - только чит ать и выполнять . unset [ <имя > ... ] Для каждого имени удаляет соответствующую переменную или функцию . Переменные PATH, PS1, PS2 и IFS не могут быть удалены . wait [ n ] Ждет завершения у казанного процесса и выводит код его завершения . Если n не указано , то ожидается завершения всех активных процессов-потомков и возвращается код завершения 0. 4. Выполнение shell-программ 4.1. Запуск shell'а Программа , интерпр етирующая shell-программы , находится в файле /bin/sh. При запус ке ее первый аргумент является именем shell-программы , остальные передаются как позициональные параметры . Если файл , содержащ ий shell-программу , имеет право выполнения (x), то достаточно указания лишь его имени . Наприме р , следующие две команды операционно й системы эквивалентны (если файл ficofl облад ает указанным правом и на самом деле содержит shell-программу ): sh ficofl -d . g\* и ficofl -d . g\* 4.2. Выполнение При выполнении shell-программ выполняются все подстановки . Если имя команды с овпадает с именем спе циальной команды , то она выполнается в рам ках текущего процесса . Так же выполняются и определенные пользователем функции . Если им я команды не совпадает ни с именем сп ециальной команды , ни с именем функции , то порождается новый процесс и осуще ствляется попытка выполнить указанную команду . Переменная PATH определяет путь поиска дирек тории , содержащей данную команду . По умолчанию это ::/bin:/usr/ bin:/util:/dss/rk Директории поиска разделяются двоеточиями ; :: означает текущую ди р екторию . Если имя команды содержит си мвол /, значение $PATH не используется : имена , начина ющиеся с / ищутся от корня , остальные - от текущей директории . Положение найденной команды запоминается shellом и может быть опрошено командой hash. 4.3. Окружение О кружение - это набор пар имя-значение , которые передаютс я выполняемой программе . Shell взаимодействует с о кружением несколькими способами . При запуске shell создает переменную для каждой указанной пар ы , придавая ей соответствующее значение . Если вы измени т е значение какой-либо из этих переменных или создадите новую переменную , то это не окажет никакого в лияния на окружение , если не будет использ ована команда export для связи переменной shell'а с окружением (см . также set -a). Переменная может быть удалена и з окружения командой unset (см .). Таким образом , окружение каждой из выполняемых shell'ом команд формируется из в сех неизмененных пар имя-значение , первоначально полученных shell'ом , минус пары , удаленные коман дой unset, плюс все модифицированные и измене н ные пары , которые для этого д олжны быть указаны в команде export. Окружение простых команд может быть с формировано указанием перед ней одного или нескольких присваиваний переменным . Так , TERM=d460 <ком анда > и (export TERM; TERM=d460; <ком анда >) эквивалентны . Пере менные , участвующие в таких присваиваниях , наз овем ключевыми параметрами . Если установлен флаг -k (см . set), то все ключевые параметры помещаются в окружение ко манды , даже если они записаны после команд ы . 4.4. Сигналы UNIX'ом под держиваются следующие сигналы : SIGHUP - 1 - отменить (hangup) SIGINT - 2 - прерывание (interrupt) SIGQUIT - 3 - нестандартный выход (quit) SIGILL - 4 - неверная команда (illegal instruction) SIGTRAP - 5 - ловушка (trace trap) SIGFPE - 8 - исключительная ситуация при выполнении операций с плавающей запято й (floating-point exception) SIGKILL - 9 - уничтожение процесса (kill) SIGBUS - 10 - ошибка шины (bus error) SIGSEGV - 11 - нарушение сегментации (segmentation violation) SIGSYS - 12 - неверный системный вызо в (bad argument to system call) SIGPIPE - 13 - запись в канал без чтения из него (write on a pipe with no one to read it) SIGALRM - 14 - будильник (alarm clock) SIGTERM - 15 - программное завершение проц есса (software termination signal) Сигналы SIGINT и SIGQUIT игнорируются , если команда была запущена асинхронно . Иначе сигналы обрабатываются так же , как в процессе-предке , за исключением сигнала SIGSEGV (см . также Специальные команды . Trap). 4.5. Замеч ания При выполнении команд запоминается их местонахождение . Поэтому при создании команды с тем же именем , но находящейся в другой директории , все равно будет выполняться старая команда (е сли вызов происходит по короткому имени ). Для исправления ситуации во спользуйтесь к омандой hash с ключом -r (см . Специальные команды ). Если вы переименовали текущую или выш ележащую директорию , то команда pwd может давать неверную информацию . Для исправления ситуаци и воспользуйтесь командой cd с полным именем директории . 5 . Дополни тельные сведения 5.1. Команда test Команда test применяе тся для проверки условия . Формат вызова : test <выра жение > или [ <выражение > ] Команда test вычисляе т <выражение > и , если его значение - истина , возвращает код заверш ения 0 (true); иначе - н енулевое значение (false). Ненулевой код завершения возвращается и если опущены аргументы . <Выраже ние > может состоять из следующих примитивов : -r файл - истина , если файл су ществует и доступен для чтения -w файл - истина , если фа йл существует и доступен для записи -x файл - истина , если файл существует и является выполняемым -f файл - истина , если файл существует и является обычным файлом -d файл - истина , если файл существует и является директорией -c файл - истина, если фа йл существует и является специальным символьн о-ориентированным файлом -b файл - истина , если файл существует и является специальным блок-ориентир ованным файлом -p файл - истина , если файл существует и является именованным каналом (pipe) -s файл - истина , если файл существует и имеет ненулевую длину -t [ дескриптор файла ] - истина , если открытый файл с указанным дескриптором (по умолчанию 1) существует и ассоциирован с терминалом -z s1 - истина , если длина с троки s1 нулевая -n s1 - истина , если длина с троки s1 ненулевая s1 = s2 - истина , если строки s1 и s2 совпадают s1 != s2 - истина , если строки s1 и s2 не совпадают s1 - истина , если s1 непустая стро ка n1 -eq n2 - истина , если це лые n1 и n2 алгебраически совпадают . Н а ме сте -eq могут быть также -ne, -gt, -ge, -lt, -le 5.2. Команда expr Команда expr применяе тся для вычисления выражений . Результат вывод ится на стандартный вывод . Операнды выражения должны быть разделены пробелами . Метасимволы должны быть экранированы . Надо заметить , что 0 возвращается в качестве числа , а не для индикации пустой строки . Строки , содержащие пробелы или другие специальные сим волы , должны быть заключены в кавычки . Цел ые рассматриваются как 32-битные числа . Ниже приведен список операторов в порядке возрастания приоритета , операции с равным приоритетом заключены в фигурные скобки . Перед символами , которые должны быть экранированы , стоит \. <выр > \ | <выр > если первое <выр > не пустое и не нулевое , то возвращает его , иначе возвращает второе <выр > <выр > \ & <выр > если оба <выр > не пустые и не нулевые , то возвращает первое <выр >, иначе возвращает 0 <выр > =, \>, \>=, \<, \<=, != <выр > возвращает р езультат целочисленного сравнения если оба <в ыр > - целые ; иначе возвращает результат лексичес кого сравнения <выр > +, - <выр > сложение и выч итание целочисленных аргументов <выр > \*, /, % <вы р > умножение , деление и получение остатка от деления целочисле нных аргументов <выр > : <выр > оператор сопоставлен ия : сопоставляет первый аргумент со в торым , который должен быть регулярным выражен ием . Обычно оператор сравнения возвращает чис ло символов , удовлетворяющих образцу (0 при неуд ачном сравнении ). Однако символы \ ( и \ ) могут применяться для выделения части первого аргу мента . Регулярное выражен ие строится следующим образом : . - обозначает любой символ * - обозначает предыдущий символ , повторенный несколько раз [] - обозначают любой один из указанных между ними символов ; группа сим волов может обозначаться с помощью знака "-" (т.е . [0-9] э квивалентно [0123456789]); если после [ стоит ^, то это эквивалентно любому символу , кром е указанных в скобках и <возврата _каретки >; для указания ] в качестве образца , надо поставить ее сразу за [ (т.е . []...]); . и * внутри квадратных скобок обозначают с а м их себя Все остальные символы (и ^, если стоит не в квадратных скобках ) обозначают самих себя . Для указания символов ., *,[ и ] надо экранировать их (т.е . писать \., \*, \[, \]). Примеры. 1. a=`expr $a + 1` - увеличение на 1 переменной a 2. expr $a : '.*/\(.*\)' \| $a - выделяет из имени файла короткое имя (т.е . из /usr/util/ena выд еляется ena). Внимание , одиночный символ / будет во спринят как знак операции деления . 3. expr $VAR : '.*' - получение колич ества символов переменной VAR. В каче стве побочного эффекта expr воз вращает следующие коды завершения : 0 - если выражение не нуль и не пустая строка 1 - если выражение нуль или пустая строка 2 - для некорректных выражений Команда expr также выдает следующие сообщения об ошибках : syntax error - для ошибок в операторах или операндах non-numeric argument - для попыток применения арифметических операций к нечисловым строкам Замечание. Допустим , что м ы хотим сравнить значение переменной a с к аким-либо символом , имеющим для expr о собый смысл , например , со знаком равенства . Пусть $a на самом деле является знаком равенства . Так как аргументы предварительно обрабатыва ются shell'ом , то команда expr $a = '=' будет воспринята как expr = = = что синтаксически некорректно . В подобных случаях надо пользоваться таким приемом : expr X$a = X= т.е . добавлением некоторого символа к обеим строкам , что никак не влияет на результат сравнения , однако позволяет избежать синтаксической ошибки . 5.3. Команда ena Команда ena поз воляет получить части полного имени ф айла . Первый аргумент - флаг , второй - имя фа йла . Команда различает следующие флаги : -n - имя файла без расширения -f - имя файла с расширением -e - расширение -d - имя директории -p - если имя файла начин ается с . или .. , то эти символы выде ляются из имени Ниже приводится текст программы ena, хранящийся в /util/ena. # Get part of pathname case $1 in -n ) expr $2 : '.*/\(.*\)[.].*' \| $2 : '\(.*\)[.].*' \| $2 ;; -f ) expr $2 : '.*/\(.*\)' \| $2 ;; -e ) expr $2 : '.*\([.][^./]*\)' \| ' ' ;; -d ) expr $2 : '\(.*\)/.*' \| $2 ;; -p ) expr $2 : '\([.]\)/.*' \| $2 : '\([.][.]\ )/.*' \| ' ' ;; * ) echo "error: unknown part of pathname $1" exit 2 ;; esac
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
«Франции, конечно, будет нелегко, но ей придется найти такую жопу, в которую она сможет засунуть свои «Мистрали» - на такой веселой ноте закончились переговоры на высшем уровне наших стран.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Интерпретатор командного языка shell", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru