Презентация Программирование на языке shell онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Программирование на языке shell абсолютно бесплатно. Урок-презентация на эту тему содержит всего 111 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Образование » Программирование на языке shell



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    111 слайдов
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    226.00 kB
  • Просмотров:
    86
  • Скачиваний:
    0
  • Автор:
    неизвестен



Слайды и текст к этой презентации:

№1 слайд
Программирование на языке
Содержание слайда: Программирование на языке shell Программа shell является одной из наиболее важных утилит OC UNIX. shell - это не только интерпретатор команд системы UNIX ( типа command.com в DOS), но еще и язык программирования на уровне таких команд (то есть можно создавать файлы типа '.bat' как в DOS).

№2 слайд
При рассмотрении команд в
Содержание слайда: При рассмотрении команд в UNIX по сути использовался интерактивный режим взаимодействия с shell, в котором можно: - ввести команду; - сделать перадресацию (перенаправление); - создать конвейер. Но это только часть возможностей написания программ на языке shell, версий которых очень много:

№3 слайд
- командный процессор Борна
Содержание слайда: - командный процессор Борна – sh (более старый); - командный процессор С – csh (более новый, но много различий в этих двух языках); - командный процессор Корна – ksh (полностью совместим С Борном и включает многие черты С).

№4 слайд
Любая хранимая в файле
Содержание слайда: Любая хранимая в файле команда или последовательность команд системы UNIX называется shell-программой или командным файлом. Обычно командным файлом называют простую последовательность команд, а "shell-программой" - их более сложные структуры: с ветвлением, с циклом и др. Существуют три способа инициализации shell для выполнения командных файлов.

№5 слайд
Этот метод основан на
Содержание слайда: Этот метод основан на переадресации ввода не с терминала, а с файла. Пусть файл lsdir содержит некоторые команды, тогда можно выполнить: sh < lsdir В первом случае есть недостаток - нельзя передавать аргументы. Поэтому существует возможность в shell читать команды с файла, хранимые на диске. Это можно сделать просто: sh lsdir

№6 слайд
Здесь уже можно передавать
Содержание слайда: Здесь уже можно передавать аргументы, если Вы их предусмотрели. Например, sh lsdir /bin/etc Если в файле право доступа на выполнение не подавлено ( установить такой доступ можно командой chmod a+x lsdir ), то тогда выполнить действие по команде из файла lsdir можно просто, набрав lsdir Этот способ является наиболее предпочтительным и часто используется.

№7 слайд
shell переменные Переменные в
Содержание слайда: shell переменные Переменные в системе shell должны начинаться с буквы, состоять из букв, цифр и знака подчеркивания. Имена переменных чувствительны к регистру. Они могут быть любой длины из заглавных, строчных букв, также содержать цифры и специальные символы. Но они не должны начинаться с цифры и не могут содержать спец символы командного интерпретатора (*, $, ?, [, ], <, >)

№8 слайд
Присваивание значений
Содержание слайда: Присваивание значений переменным Значение переменным можно присвоить по команде присваивания: ux=u.UNIX ux=INIX Здесь первым оператором значение u.UNIX присваивается shell-переменной "ux", а вторым - ее значение меняется на новое. Желательно команды писать строчными буквами, а переменные – всегда прописными. Примечание: Перед знаком = и после не должно быть пробелов.

№9 слайд
Если необходимо присвоить
Содержание слайда: Если необходимо присвоить переменной значение, содержащее пробелы, знаки табуляции и символы новой строки, то оно должно быть заключено в кавычки: name="Titov Vladidmir Ivanovich" Команда readonly (только читать) помечает переменную таким образом, что ее значение не может быть изменено: readonly ux Теперь, если выполнить для переменной ux команду ux=uu.UNIX

№10 слайд
то будет выдано сообщение об
Содержание слайда: то будет выдано сообщение об ошибке "ux: is read only". Поэтому, если в shell-программе значение переменной не должно меняться, то имеет смысл применить команду readonly. Если требуется получить список переменных, которые нельзя изменить, то надо выполнить одну команду readonly без параметров.

№11 слайд
Вновь создаваемые переменные
Содержание слайда: Вновь создаваемые переменные локальны, то есть, эффективны только в пределах текущего экземпляра shell. При необходимости использовать их в любых процессах, порождаемых интерпретатором, они должны быть отмечены как внешние с помощью оператора export. Например, export ux помечает переменную ux внешней. Отметка export существует вплоть до окончания работы shell. Список текущих внешних переменных можно получить командой export без параметров.

№12 слайд
Использование переменных При
Содержание слайда: Использование переменных При использовании значения переменной перед именем переменной должен находиться символ $. Этот символ информирует shell о том, что следующее за ним имя относится к переменной, а не к файлу или к литералу. Значения требуемых переменных можно вывести на экран по команде echo.

№13 слайд
Например, по команде echo ux
Содержание слайда: Например, по команде echo $ux будет выведено INIX, так как именно это значение было последним. Переменная, которой не было явно присвоено значение, содержит пустую строку. Поэтому при выполнении команды echo $abc на экран ничего не будет выводиться.

№14 слайд
Если имя переменной заключить
Содержание слайда: Если имя переменной заключить в фигурные скобки, то её выведенное значение будет сопровождаться последовательностью символов, следующих за скобками. Например, по команде echo ${ux}tm будет напечатано UNIXtm. Конструкция ${} используется, чтобы уточнить ссылку на переменную. Эта конструкция показывает, где заканчивается имя переменной и начинается текст, который следует добавить.

№15 слайд
Интерпретатор shell
Содержание слайда: Интерпретатор shell автоматически присваивает значения следующим пяти встроенным переменным: $? - значение, возвращаемое последней выполненной командой (код возврата: - равен 0 при успешном выполнении, - при других неравен 0); $$ - идентификационный номер процесса shell;

№16 слайд
!- идентификационный номер
Содержание слайда: #! - идентификационный номер фонового процесса, запускаемого интерпретатором shell; $# - число аргументов позиционных параметров, передаваемых в shell; $* - список аргументов, переданных в shell. $- - флаги, передаваемые в shell при его запуске или установленной командой set.

№17 слайд
Эти переменные равнозначны
Содержание слайда: Эти переменные равнозначны переменным, создаваемым пользователем. Например, по команде echo $$ выведется идентификационный номер shell. Его можно проверить с помощью команды ps.

№18 слайд
Использование
Содержание слайда: Использование shell-переменных в интерактивном режиме shell-переменные можно использовать в интерактивном режиме. Предположим, что мы работаем с каталогом '/usr/src/my/doc/'. Чтобы его не писать во всех командах, это имя можно присвоить переменной mydir=/usr/src/my/doc/

№19 слайд
После этого мы можем
Содержание слайда: После этого мы можем: проверить корректность указанного имени по команде echo $mydir получить список файлов каталога по команде ls $mydir вывести на экран файл из этого каталога по команде cat $mydir/doc_unix.txt выполнить программу myprog, хранящуюся в этом каталоге. Для этого присвоим полное имя новой переменной. Это можно сделать двумя способами:

№20 слайд
my prog usr src my doc myprog
Содержание слайда: my_prog = /usr/src/my/doc/myprog my_prog = $mydir/myprog тогда ввод строки my_prog $mydir/doc_unix.txt приведет к выполнению программы myprog с параметром doc_unix.txt.

№21 слайд
Строки поиска пути Как и в
Содержание слайда: Строки поиска пути Как и в Dos, в UNIX-shell есть shell-переменная PATH, по которой рассматриваются пути поиска файлов. Обычно в нем находятся: - каталог /bin - каталог /ust/bin - текущий каталог.

№22 слайд
В строке поиска пути каталоги
Содержание слайда: В строке поиска пути каталоги разделены двоеточиями, а для указания текущего каталога служит пустое имя. Это пустое имя может быть задано или двумя следующими подряд двоеточиями или одним двоеточием в начале строки. Необходимо отметить, что порядок поиска зависит от того, как каталоги расположены в строке поиска пути. Так как строка поиска пути - это shell-переменная, то она может быть задана в интерактивном режиме.

№23 слайд
Например, PATH usr bin bin
Содержание слайда: Например, PATH = :/usr/bin:/bin:usr/mi/bin Чтобы строки поиска пути инициализировались при запуске shell, необходимо чтобы в Вашем начальном каталоге располагался файл по имени ".profile" с этими строками.

№24 слайд
Отмена специального смысла
Содержание слайда: Отмена специального смысла символа Существует три метода отмены специального смысла символа: Путем вставки обратной косой черты (\) перед символом; Путем заключения всех символов последовательности в одинарные кавычки (‘). При этом теряют специальный смысл три знака: - знак $ (доллара); - знак ’ (кавычки); - знак ” (двойных кавычек).

№25 слайд
Путем заключения всех
Содержание слайда: Путем заключения всех символов последовательности в двойные кавычки. При этом не теряют специальный смысл четыре знака: - знак \ (обратная косая черта); - знак ` (знака ударения/апострофа); - знак ' (кавычки); - знак $ (доллара).

№26 слайд
Одинарные кавычки указывают
Содержание слайда: Одинарные кавычки ‘’ указывают командному интерпретатору сохранить и не интерпретировать текст внутри них (то есть спрятать любые спец символы от командного процессора). Двойные кавычки “” используются, чтобы сгруппировать вместе слова для формирования параметра или предложения. Но в них возможна интерпретация переменных.

№27 слайд
Пример Term ansi a echo
Содержание слайда: Пример: Term=ansi a) echo ‘Output $Term’ b) echo “Output $Term” В первом случае будет выведено Output $Term а во втором Output ansi

№28 слайд
Апостроф наклонная одинарная
Содержание слайда: Апостроф ` наклонная одинарная кавычка (расположена на клавише, что и тильда ~) применяется для замещения команды: а) выполнить команду и сохранить результаты в переменной; б) выполнить команду и передать ее выходные данные другой команде. Примеры: А) echo `ls /bin/c*` Командный процессор видит апострофы и выполняет команду ls, а затем помещает полученную информацию в команду echo.

№29 слайд
Результат может быть такой
Содержание слайда: Результат может быть такой: /bin/cat /bin/cc /bin/chmod /bin/csh Б) PWD=`pwd` Сохранение имени текущего каталога в переменной PWD. Поэтому при применении команды echo $PWD , будет выведено имя каталога, где вы сейчас находитесь. Часто применятся следующий прием:

№30 слайд
pwd PWD pwd echo PWD cd tmp
Содержание слайда: pwd PWD=`pwd` echo $PWD cd /tmp pwd ……… sd $PWD pwd

№31 слайд
Для отмены специального
Содержание слайда: Для отмены специального смысла одного символа - надо применить обратную косую черту (\). Для группы символов это рекомендуется применять в случаях, когда Вы хотите shell-переменной присвоить последовательность слов, разделенных пробелами. Например, в случае ps_10 = Student Titov Vladimir переменной будет присвоено только слово Student и выдано аварийное сообщение, что команд и программ с именами Titov и Vladimir не найдены.

№32 слайд
Поэтому надо сделать ps
Содержание слайда: Поэтому надо сделать: ps_10='Student Titov Vladimir' или ="Student Titov Vladimir" или =Student\ Titov\ Vladimir Эти все три способа равноценны.

№33 слайд
Команда set Команда set
Содержание слайда: Команда set Команда set (установить) предназначена для вывода списка созданных переменных. Чаще всего в нем выводится, кроме Вами созданных переменных, еще и следующие: - TERM = vt100- тип терминала; - PS1 = '$'- первичная подсказка, которую выводит интерпретатор shell, когда он готов принимать команду; - PS2 = '>'- вторичная подсказка, которую выводит копия shell (то есть, вторично запущенный интерпретатор shell);

№34 слайд
- PATH bin usr bin - HOME -
Содержание слайда: - PATH = /bin::/usr/bin - HOME = - имя Вашего начального каталога; - IFS = - внутренние разделители полей, которыми обычно служат: - пробел; - табуляция; - символы новой строки.

№35 слайд
Команда set имеет несколько
Содержание слайда: Команда set имеет несколько опций, но Мы рассмотрим только одну: -v - все входные строки, читаемые shell, выводятся на экран. +v - подавление вывода на экран входных строк.

№36 слайд
Доступ к отдельным аргументам
Содержание слайда: Доступ к отдельным аргументам Когда команда set применяется одновременно с подстановкой результата выполнения команды, каждый из элементов вывода при подстановке команды присваивается отдельному позиционному параметру. Для задания подстановки результата выполнения команды в следующем примере команда date заключена в знаки апострофа ` (самая левая клавиша в цифровом ряде): set `date`

№37 слайд
Выход команды date становится
Содержание слайда: Выход команды date становится последовательностью аргументов для команды set и поэтому на экране ничего не появится. Если вызвать саму команду date, то на экране можно будет увидеть: date Sun May 28 13:49:53 2011

№38 слайд
После выполнения команды set
Содержание слайда: После выполнения команды set `date` её результат будет присвоен последовательности параметров $1, $2, $3, $4, $5 Теперь можно выводить на экран в любом удобном виде. Например: echo 'DATE: $3 $2 $1 $5 TIME: $4' На экран будет выведено: DATE: 29 May Sun 2011 TIME: 13:49:53

№39 слайд
Доступ к другим позиционным
Содержание слайда: Доступ к другим позиционным параметрам с номерами, больше девяти, происходит по команде shift (сдвиг), которая сдвигает аргументы на одну позицию влево: ($1 <= $2, $2 <= $3 и т.д.), но имя команды в позиции $0 остается без изменения. Интерпретатор shell воспринимает символ звездочки * как метасимвол для генерации номера любого позиционного параметра.

№40 слайд
Путем ввода следующей команды
Содержание слайда: Путем ввода следующей команды можно получить доступ ко всем позиционным параметрам вызова: shift echo $* arg2, arg3, ....., arg11, arg12 то есть, здесь выводятся все - вплоть до последнего имеющегося параметра, тогда как команда: echo $1 $2 $3 $4 $5 $6 $7 $8 $9 выведет только $2 $3 $4 $5 $6 $7 $8 $9 $10

№41 слайд
Простые условные операторы
Содержание слайда: Простые условные операторы Команда test | [ ] Эта команда используется совместно с командами while, until и if. Они запускают команду test и проверяют код возврата команды test. Аргументы команды test образуют выражение, которое вычисляется при ее выполнении. Если результат является true, то код возврата равен нулю, если false, то код возврата не равен нулю.

№42 слайд
Команда является другим
Содержание слайда: Команда [ ] является другим именем команды test. Её синтаксис [выражение] Эти две команды используют выражение, которое применяется для сравнения либо текста, либо числа , либо атрибутов файлов или каталогов. Это выражение может браться из переменных, констант и операторов. Операторы могут быть строковыми, булевыми или файлами.

№43 слайд
Команда test может
Содержание слайда: Команда test может использоваться для трех объектов: - файлов, - числовых выражений, - цепочек символов. Проверка файлов В этом случае общий вид команды имеет вид: test опция имя_файла

№44 слайд
Опции имеют вид -r - файл
Содержание слайда: Опции имеют вид: -r - файл существует и его можно прочитать; -w - файл существует и в него можно записывать; -x - файл существует и может выполняться; -f - файл существует и не является каталогом; -d - файл существует и является каталогом; -s - размер файла отличен от нуля.

№45 слайд
Сравнение числовых величин В
Содержание слайда: Сравнение числовых величин В этом случае общий вид команды имеет вид: test А операция В Операции имеют вид: -eq - A = B -ne - A ≠ B -ge - A ≥ B -gt - A > B -le - A ≤ B -lt - A < B

№46 слайд
Пример проверки целых чисел
Содержание слайда: Пример проверки целых чисел test $int1 -eq $int2 или [$int1 -eq $int2]

№47 слайд
Сравнение цепочек символов
Содержание слайда: Сравнение цепочек символов test -n <string> существование цепочки символов test -z <string> отсутствие цепочки символов test <string1> = <string2> равенство двух цепочек символов test <string1> != <string2> неравенство двух цепочек символов

№48 слайд
Если цепочка символов
Содержание слайда: Если цепочка символов заключена в двойные кавычки, то специальные символы сохраняют свой смысл, и пробелы трактуются как символы. Если Вы ставите цепочку символов без кавычек, то пробелы в цепочку не включаются. Если цепочка символов заключена в одинарные кавычки, то три специальных символа - знак доллара ($), знак одинарной кавычки (') и знак двойных кавычек (") теряют свой смысл специальных символов.

№49 слайд
Пример Пусть Y abcd , X abcd
Содержание слайда: Пример: Пусть Y = ' abcd', X = abcd а) test $Y = $X проверяет цепочки и не учитывает пробелы, поэтому результатом будет true, то есть Y=X; б) test “$Y” = “$X“ проверяет цепочки с учетом пробелов, поэтому результатом будет false, то есть Y ≠ X; в) test '$Y' = '$X' проверяет цепочки, состоящие из двух символов. Первая $Y, а вторая - $X. Поэтому результатом будет false, так как $Y ≠ $X.

№50 слайд
Команды true и false Команда
Содержание слайда: Команды true и false Команда true формирует код возврата 0, а команда false - не ноль (чаще всего это 1). Команды !, -o, -a, &&, II ! - инвертирует значение выражения; -o - логическое "или"; -a - логическое "и"; Пример: if [$# -lt 2 –a $1 –ne 1] здесь два выражения ($# -lt 2) и ($1 –ne 1) должны быть равными true.

№51 слайд
Команды amp amp и II
Содержание слайда: Команды && и II позволяют контролировать выполнение. && означает, что следующая за ней команда будет выполнена в том случае, если предшествующая дала true, то есть код возврата, равным 0; II означает, что команда, стоявшая после II, выполняется, если первая даст код возврата не 0 (false). Условный оператор Операторы && и II могут дать только простые условные структуры. К более сложным операторам относится оператор if. Оператор if в простом виде имеет следующий формат:

№52 слайд
ifif list then then list fi
Содержание слайда: if if_list then then_list fi Альтернативная ветвь else В этом случае условный оператор имеет вид: if if_list then then_list else else_list fi Объединение операторов else и if - elif if if_list then then_list_1 elif elif_list then then_list_2 else else_list fi

№53 слайд
Здесь elif выполняется, если
Содержание слайда: Здесь elif выполняется, если if_list не равен нулю, и состоит в следующем: if elif_list then then_list_2 else else_list fi В группе может находиться только один блок if и один блок else, а количество elif может быть различным.

№54 слайд
Ветвление по нескольким
Содержание слайда: Ветвление по нескольким направлениям case Её лучше применять в случае большого числа if и else. Данная структура предназначена для выполнения ветвления по нескольким направлениям на основе совпадения образов.

№55 слайд
Ее общая форма такова case lt
Содержание слайда: Ее общая форма такова: case <string> in s1) <список команд>;; s2) <список команд>;; …………………………. sn) <список команд>;; esac

№56 слайд
Команда case сравнивает
Содержание слайда: Команда case сравнивает шаблон string с каждым шаблоном s1,s2... sn. Если фиксируется совпадение, то будет выполняться список команд, который следует за совпавшим со string шаблоном. Синтаксис команды требует двойных точек с запятой (;;) в конце каждого списка и оператора esac в конце всей команды case.

№57 слайд
Одному списку команд может
Содержание слайда: Одному списку команд может соответствовать несколько текстовых образцов, разделенных вертикальной чертой, указывающий на дизъюнкцию. s1|s2|s3) Обычный смысл вертикальной черты как конвейера в операторе case подавляется. Последний шаблон желательно *), так как * соответствует любой последовательности. Шаблон может содержать метасимволы shell (* ? {…} […])

№58 слайд
Пример case in - Number True
Содержание слайда: Пример: case “$1” in [1-9]) Number=True;; A|a) dev=A;; B|b dev=B;; /dev/* dev=$1;; esac Здесь, если $1 отличное от нуля число, то выполняется первый пункт. Если это буква a и A, то выполняется второй пункт.

№59 слайд
Построение циклов Цикл тип
Содержание слайда: Построение циклов Цикл тип while Синтаксис такого оператора следуюший: while while_list do do_list done Вначале проверяется условие, а потом выполняется тело цикла. Цикл типа until Синтаксис такого оператора следуюший: until until_list do do_list done Здесь цикл выполняется, пока until_list не равно 0 (то есть, пока until_list имеет значение false).

№60 слайд
Цикл типа for А for с in for
Содержание слайда: Цикл типа for А) for с in for name in for_list do do_list done Переменной name присваивается в качестве значения текущее слово списка. Список операторов do_list выполняется один раз для каждого слова из списка for_list.

№61 слайд
Пример. list world world
Содержание слайда: Пример. list = 'world_1 world_2 world_3 world_4' for VAL in $list do echo $VAL done echo 'End of list' На экран будет выведено: world_1 world_2 world_3 world_4 End of list

№62 слайд
Б forбез in Структура for
Содержание слайда: Б) for без in Структура for может применяться и без ключевого слова in. for name do do_list done В этом случае do_list выполняется один раз для каждого позиционного параметра (аргумента) интерпретатора shell. Команда for name эквивалентна команде for name in $*.

№63 слайд
Например, необходимо
Содержание слайда: Например, необходимо инвертировать порядок списка аргументов. Для этого необходимо выполнить: list = '' for arg do list = "$arg $list" done echo $list Если интерпретатор shell запускался с параметрами 1 2 3 4 5, то будет выдано 5 4 3 2 1.

№64 слайд
Кроме аргументов командной
Содержание слайда: Кроме аргументов командной строки и позиционных параметров, могут обрабатываться файлы, используя знаки подстановки: for file in * do echo “found $file” done В этом примере выводится список файлов, находящихся в данном каталоге, по одному названию файла в строке. for file in [ab]* …. for file in a?? ….

№65 слайд
Пустая строка - это команда
Содержание слайда: Пустая строка : - это команда обозначает отсутствие операции. Её нельзя использовать в качестве комментария. # - оператор комментария (игнорирует выполнение); : - ничего не делает. if [ ! $1] then : # Нет ничего fi

№66 слайд
Данный пример показывает, что
Содержание слайда: Данный пример показывает, что shell будет обрабатывать это, так как двоеточие – это команда. Если просто подставить #, то процессор сообщит, что нет выполняемой команды.

№67 слайд
Прерывание цикла break
Содержание слайда: Прерывание цикла break Оператор break прерывает очередное выполнение включающего самого внутреннего его цикла. Например, while true do echo $Loop3 until false do echo $Loop2 while true 3 2 1 do echo $Loop1 break $level done done done

№68 слайд
Если переменная level
Содержание слайда: Если переменная level отсутствует или равна 1, то прерывается цикл 1. Если level=2, то прерывается цикл 2, и если level=3, то прерывается цикл 3. Прерывание итерации цикла continue Эта команда приводит к прерыванию выполнения итерации ближайшего цикла, в котором находится сама команда continue.

№69 слайд
while true doecho Loop until
Содержание слайда: while true do echo $Loop3 until false do echo $Loop2 while true do echo $Loop1 continue $level done done done

№70 слайд
Если переменная level имеет
Содержание слайда: Если переменная level имеет значение 2, то выполнение будет продолжено с оператора цикла until. Если же значение будет равно 3, то будет возобновлен внешний цикл while. Если же переменная level не установлена или равна 1, то будет продолжаться выполнение самого внутреннего цикла.

№71 слайд
Фоновое выполнение цикла Если
Содержание слайда: Фоновое выполнение цикла Если после done подставить &, то цикл будет выполняться в фоновом режиме. for var in 1 2 3 4 5 do echo “$var” done & это может быть применено и для циклов while и until.

№72 слайд
Выход из программы exit Эта
Содержание слайда: Выход из программы exit Эта команда прекращает не просто текущий цикл, а всей процедуры. После выполнения команды exit в вызывающую программу передается код возврата, равный нулю (true). Если команда имеет аргумент, например, exit $status, то возвращается код возврата, равный значению переменной status.

№73 слайд
Переназначение ввода вывода и
Содержание слайда: Переназначение ввода/вывода и циклы Переназначение ввода for var in * do команды done < источник Все команды в цикле получают данные через стандартный ввод. Можно получить из перенаправленного источника (любая команда считывает данные из указанного источника).

№74 слайд
for var in do команды lt
Содержание слайда: for var in * do команды < источники done Здесь каждая команда может брать входные данные с разных мест. Переназначение вывода Аналогично можно переназначить вывод: for var in 1 2 3 4 5 do echo “$var” done

№75 слайд
Здесь все выходные данные
Содержание слайда: Здесь все выходные данные всех команд в цикле направляются в единый файл (стандартный вывод). for var in 1 2 3 4 5 do echo “Processing $var” > /dev/tty команды done > output Здесь по команде echo данные направлены на tty, а по всем другим командам - в единый файл (стандартный вывод).

№76 слайд
Можно связать циклы и
Содержание слайда: Можно связать циклы и конвейеры: ls | for file in * do echo $file file $file done Это пример перекачки данных в цикл из конвейера. Команда file определяет тип файла.

№77 слайд
for file in do echo file done
Содержание слайда: for file in * do echo $file done | wc –l Здесь передача информации в конвейер в конце цикла. Происходит печать имен файлов и посылка по конвейеру команде wc –l для подсчета количества файлов.

№78 слайд
Подстановка результатов
Содержание слайда: Подстановка результатов выполнения команд shell дает возможность использования стандартного вывода любой команды в shell-программе. Если команда заключена в знаки ударения (апострофы), то shell выполняет эту команду и подставляет вместо нее полученный результат.

№79 слайд
Пример . now date В
Содержание слайда: Пример 1. now = 'date' В результате действия переменной now будет присвоена текущая дата: now = Wed Feb 12 11:49:23 1997 Теперь по команде echo $now на экран будет выведена дата, хранящаяся в now.

№80 слайд
Пример . f names ls В этом
Содержание слайда: Пример 2. f_names = 'ls' В этом случае переменной f_names будут присвоены результаты выполнения команды ls. Если в текущем каталоге было 4 файла с именами file_1, file_2, file_3, file_4, то при использовании команды для вывода echo $f_names на экране появится: file_1 file_2 file_3 file_4

№81 слайд
Пример . curr pwd Получение
Содержание слайда: Пример 3. curr = 'pwd' Получение текущего каталога cd /usr/bin/Mi/doc Переход в другой каталог ................. Действия в этом каталоге cd $curr Возврат в текущий каталог, то есть не надо было его помнить!

№82 слайд
Вычисление выражений expr Для
Содержание слайда: Вычисление выражений expr Для выполнения арифметических операций в командном процессоре Борна (в Корне и С – это встроено). Результат передается на стандартный ввод. Рассмотрим пример работы Борна: a=1 b=$a + 1 (все аргументы отделяются пробелами) echo $b Будет выдано: $a + 1

№83 слайд
То есть он текст
Содержание слайда: То есть он текст “+1” конкатенирует с переменной a, так как все цифры в Борне – это символы. Вычисление арифметических выражений Команда expr рассматривает свои аргументы как выражения (арифметические или логические). Результат вычисления передается на стандартный вывод.

№84 слайд
При этом могут быть
Содержание слайда: При этом могут быть использованы следующие операции: + - сложение - - вычитание * - умножение / - деление на цело % - деление по модулю ( взятие остатка) В команде все аргументы необходимо отделять пробелами. Для предотвращения интерпретации специальных символов их надо отменять.

№85 слайд
Примеры a a a expr a a b expr
Содержание слайда: Примеры: a = 2 a = 2 a = `expr $a + 7` a = 9 b = `expr $a / 3` b = 3 c = `expr $a - 1 ‘*’ $b` c = 24 d = `expr $c % 5` d = 4 e = `expr $d - $b` e = 1 Если применить expr 10 + 2, то будет выдано 10+2. При 10 - 2 и 10 * 2 будет выданы ошибки.

№86 слайд
Сравнение цепочки символов
Содержание слайда: Сравнение цепочки символов Эта команда может использоваться для сравнения цепочек. Команда expr с помощью операции двоеточия (:) позволяет сравнивать цепочки символов. Результатом выполнения такой команды является число совпадающих символов в обеих цепочках. Если результат равен нулю, то совпадение отсутствует.

№87 слайд
R expr abcdef abcd echo R
Содержание слайда: R = `expr ‘abcdef’ : ‘abcd’` echo $R 4 ВНИМАНИЕ! Вторая цепочка символов сопоставляется с первой цепочкой, начиная с первого символа. Поэтому даже один несовпадающий символ во второй цепочке приведет к неудачному сопоставлению, в следствии чего результатом будет ноль.

№88 слайд
Примеры несовпадения цепочек
Содержание слайда: Примеры несовпадения цепочек: R = `expr ‘abcdef’ : ‘abce’` нет символа d T = `expr ‘abcdef’ : ‘bcd’` нет символа a V = `expr ‘abcd’ : ‘abcdef’` вторая цепочка длиннее первой echo $R $T $V будет выдано: 0 0 0

№89 слайд
Такое сопоставление можно
Содержание слайда: Такое сопоставление можно выполнить и с использованием переменных M = ‘abcdef’ N = ‘abcd’ C = `expr $M : $N` Применяя эту команду, можно определить длину цепочки: A = "This is an experement" Присваивание цепочки символов переменной A. Так как в ней есть пробелы, то ее заключаем в двойные кавычки.

№90 слайд
count expr A . Второй операнд
Содержание слайда: count = `expr $A : ‘.*’` Второй операнд .* говорит о том, что символ (.) может повторяться сколько угодно раз, а сам символ (.) означает любой символ. Чтобы указать интерпретатору shell на специальный смысл символов (.) и (*), второй аргумент заключен в апострофы echo $count 21

№91 слайд
Другой возможностью команды
Содержание слайда: Другой возможностью команды expr является ее способность выделить только часть цепочки символов с помощью конструкции \(...\). Эти круглые скобки – скобки регулярного выражения, которые используются для запоминания результата. B = `expr $A : ‘….. \(.*\)’` Здесь пять точек перед знаком \ соответствует пяти символам, которые следует пропустить ( включая пробел ) с начала цепочки символов. echo $B Результат операции: is an experement

№92 слайд
Условная замена переменных
Содержание слайда: Условная замена переменных При условной замене значение одной переменной подставляется вместо значения другой. Интерпретатор shell реализует четыре варианта условно замены с помощью 4-х символов: -, =, ?, +: A. {VARIABLE - OTHER} Если переменной VARIABLE было присвоено значение, то используется оно. В противном случае используется цепочка символов OTHER, а переменная VARIABLE не меняется.

№93 слайд
B. VARIABLE OTHER Если
Содержание слайда: B. {VARIABLE = OTHER} Если переменной VARIABLE было присвоено значение, то используется оно. В противном случае перед использованием переменной VARIABLE ей присваивается значение переменной OTHER. C. {VARIABLE ? EMPTY} Если переменной VARIABLE было присвоено значение, то используется оно. В противном случае на экран выводится сообщение VARIABLE : EMPTY, а процедура прекращается.

№94 слайд
При отсутствии аргумента
Содержание слайда: При отсутствии аргумента справа от знака ? выдается стандартное сообщение системы: VARIABLE : parametr not set D. {VARIABLE + OTHER} Если переменной VARIABLE было присвоено значение, то используется значение переменной OTHER. Если же значение переменной VARIABLE не присвоено, то в качестве ее значение используется пустая цепочка символов и при этом переменной VARIABLE значение не присваивается.

№95 слайд
Примеры. Пусть во всех
Содержание слайда: Примеры. Пусть во всех примерах переменные VAL и VAR не определены. A1. echo ${VAL - 123} 123 A2. SUB = 456 echo ${VAL - $SUB} 456 B. echo ${VAL = xyz} xyz echo $VAL xyz

№96 слайд
C .Err Переменная
Содержание слайда: C1. Err = 'Переменная отсутствует. Процедура прервана' echo ${VAR ? Err} VAR : Переменная отсутствует. Процедура прервана C2. echo ${VAR ?} VAR : parametr not set D. THIS = 145 THAT = abc echo ${THIS + $THAT} abc echo $THIS 145

№97 слайд
Усложненное присваивание
Содержание слайда: Усложненное присваивание переменным В операторах присваивания можно присваивать значения нескольким переменным. Пример 1. a = T b = H c = I d = S echo $a$b$c$d THIS

№98 слайд
Пример . А a b a echo a b Б z
Содержание слайда: Пример 2. А) a = 123 b = $a echo $a $b 123 123 Б) z = $y y = 123 echo $z $y 123 123 ВНИМАНИЕ! В интерпретаторе shell присваивание переменным происходит справа налево, а не наоборот.

№99 слайд
Пример . x y string Величина
Содержание слайда: Пример 3. x = 123 y = 456 string1 = `Величина $x и $y` string2 = "Величина $x и $y" echo $string1 echo $string2 Величина $x и $y (Выводятся имена переменных, так как при апострофах специальный смысл знака $ теряется) Величина 123 и 456 (В строках с двойными кавычками происходит интерполяция переменных)

№100 слайд
Пример .Значение, присваемое
Содержание слайда: Пример 4. Значение, присваемое переменной, может быть значением другой переменной. A = символ1 В этом примере дополнительные символы приписываются слева B = мета$A (то есть, с начала) echo $B На экран будет выведено: метасимвол1

№101 слайд
Для приписывания
Содержание слайда: Для приписывания дополнительных символов к концу имени необходимо ставить фигурные скобки. B = мета echo ${B}символ2 На экран будет выведено: метасимвол2 иначе будет выведено сообщение, что переменная $Bсимвол2 отсутствует.

№102 слайд
Позиционные параметры Для
Содержание слайда: Позиционные параметры Для идентификации позиций элементов в командной строке shell устанавливает позиционные параметры. Чтобы интерпретатор мог их различать друг от друга, они должны разделяться пробелами. При этом интерпретатор нумерует их, начиная с нуля. Первый элемент (имя команды) всегда обозначается $0, первый аргумент - $1, второй - $2 и так далее до $9.

№103 слайд
shell использует позиционных
Содержание слайда: shell использует 10 позиционных параметров и несколько специальных переменных для работы с аргументами, которые вводятся либо через командную строку либо устанавливаются пользователем. Пример. grep cat enter $0 $1 $2 shell не может одновременно обрабатывать более 10 параметров (то есть за один раз).

№104 слайд
Для этой цели применяется
Содержание слайда: Для этой цели применяется цикл и команда shift, чтобы перенести позиционные параметры влево, но имя команды остается без изменения в позиции $0. shift После этого: $2 => $1 $3 => $2 $4 => $3 и так далее.

№105 слайд
Присваивание значений
Содержание слайда: Присваивание значений позиционным параметрам Для этого применяется команда set. Она присваивает позиционному параметру значения цепочки символов аргументов. set arg1 arg2 arg3

№106 слайд
По этой команде интерпретатор
Содержание слайда: По этой команде интерпретатор shell присваивает первому позиционному параметру $1 значение arg1, второму - arg2 и т.д. Значения этих аргументов можно проверить, выведя их значения на экран: echo $1 $2 $3 Будет выведено arg1 arg2 arg3

№107 слайд
Пример set date Выход команды
Содержание слайда: Пример: set `date` Выход команды date становится последовательностью аргументов для команды set и на экране ничего не отобразится. Будет сформировано: $1 - день недели; $2 - название месяца; $3 - день месяца; $4 - дата; $5 - год.

№108 слайд
Дополнительные переменные
Содержание слайда: Дополнительные переменные командной строки. $# - число аргументов в командной строке; $* - все аргументы до последнего, то есть и $11, $12 и так далее; $@- все аргументы в командной строке после того, как кавычки поставлены около каждого из них. shift echo $1 $2 … $9 arg2 arg3 ….arg10

№109 слайд
echo arg arg . arg
Содержание слайда: echo $* arg2 arg3 …. arg12

№110 слайд
Отладка shell-программ Для
Содержание слайда: Отладка shell-программ Для установки контроля над shell-программой при вызове команды sh надо добавить одну из двух следующих опций: -x - опция трассировки. Эта опция необходима для просмотра команд и аргументов по мере их выполнения. -v - опция входного контроля. Производит отображение входных строк по мере их считывания.

№111 слайд
Например, для отладки
Содержание слайда: Например, для отладки shell-процедуры filez надо ввести: sh -x filez Можно объединять опции в одну: sh -xv filez

Скачать все slide презентации Программирование на языке shell одним архивом: