Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Подстановка значений параметров

Читайте также:
  1. Влияние параметров микроклимата на организм человека.
  2. Гигиенические нормативы параметров микроклимата жилых помещений.
  3. Грамматическое (морфологическое) значение слова, признаки грамматического значения, его отличия от лексического и словообразовательного значений.
  4. ДИСКРЕТНОСТЬ значений физических величин
  5. Для чого призначений автоматичний збір інформації?
  6. Зависимость первичных параметров передачи от размера проводника
  7. Зависимость первичных параметров передачи от температуры
  8. Задание 5. РАСЧЕТ ПАРАМЕТРОВ СИСТЕМЫ УЧЕТА ЗА СОСТОЯНИЕМ ЗАПАСА И СОСТАВЛЕНИЕ ОЖИДАЕМОГО ГРАФИКА ЗАПАСОВ
  9. Задание параметров изображения
  10. И условных обозначений

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

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

${параметр}

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

Если первый символ параметра - восклицательный знак, начинается косвенная подстановка. Командный интерпретатор bash использует значение переменной, имя которой задается остальной частью параметра, в качестве имени переменной, значение которой необходимо подставить, а не собственно значения. Это называется косвенной заменой.

В каждом из описанных ниже случаев в полученном слове выполняется замена тильды, подстановка значений параметров, подстановка результатов выполнения команд и вычисление арифметических выражений. Если не выполняется подстановка подстрок, bash проверяет, не является ли параметр не установленным или не имеет ли он пустого значения; если не указать двоеточие, проверяется только, установлен ли параметр.

Подстановка результатов выполнения команд позволяет результат, выдаваемый командой в стандартный выходной поток, подставить вместо имени команды. Имеется две формы такой подстановки:

$(команда)

или

`команда`

Командный интерпретатор bash делает эту подстановку путем выполнения команды и замены конструкции подстановки содержимым стандартного выходного потока команды, из которого удалены завершающие переводы строк. Встроенные переводы строк не удаляются, но они могут быть удалены при разбиении на слова. Подстановку результатов выполнения команды $(cat file) можно заменить эквивалентной, но более быстрой: $(< file).

При использовании старой формы подстановки в обратных апострофах обратная косая интерпретируется как литерал, если только после нее не идут символы $, ` или \. Первый же обратный апостроф, не замаскированный обратной косой, завершает подставляемую команду. При использовании формы $(команда) все символы между круглыми скобками образуют команду - ни один не имеет специального значения.

Подстановка результатов выполнения команд может быть вложенной. Для задания вложенной подстановки в форме с обратными апострофами замаскируйте внутренние обратные апострофы обратными косыми.

Если подстановка задана в двойных кавычках, разбиение на слова и подстановка имен файлов в результатах не выполняется.

10. подстановка команд

Подстановка команд — это подстановка результатов выполнения команды [43] или даже серии команд; буквально, эта операция позволяет вызвать команду в другом окружении. [44]

Классический пример подстановки команд — использование обратных одиночных кавычек (`...`). Команды внутри этих кавычек представляют собой текст командной строки.

11. написание и запуск сценариев командной оболочки

Командная оболочка в UNIX является интерфейсом командной строки в Unix -подобных операционных системах, то есть выполняет команды, которые подает пользователь, или которые читаются с файлов. Такие файлы с командами оболочки называются сценариями (скриптами, программами) оболочки. Эти сценарии не компилируются, а интерпретируются оболочкой. Это означает, что оболочка считывает сценарий от начала до конца, строку за строкой, ища указанные там команды и выполняя их; в отличие от этого подхода, компилятор преобразует целую программу к виду, пригодному для выполнения машиной - потом файл с таким кодом можно использовать в сценарии оболочки. Характерная особенность языка оболочки - многие операции, которые в традиционных языках программирования являются встроенными, выполняются с помощью вызова внешних программ.

#!/bin/bash - Тут и далее первая строка скрипта начинается с "#!". Не следует путать ее с обычным комментарием — это директива командному процессору; в ней, как видно выше, мы указываем месторасположение Bash в файловой системе, в нашем случае это /bin/bash.

 

сделать файл скрипта исполняемым, командой chmod.

chmod 555 scriptname (выдача прав на чтение/исполнение любому пользователю в системе) [9]

или

chmod +rx scriptname (выдача прав на чтение/исполнение любому пользователю в системе)

chmod u+rx scriptname (выдача прав на чтение/исполнение только "владельцу" скрипта)

После того, как вы сделаете файл сценария исполняемым, вы можете запустить его примерно такой командой./scriptname. [10] Если, при этом, текст сценария начинается с корректной сигнатуры ("sha-bang"), то для его исполнения будет вызван соответствующий интерпретатор.

И наконец, завершив отладку сценария, вы можете поместить его в каталог /usr/local/bin (естественно, что для этого вы должны обладать правами root), чтобы сделать его доступным для себя и других пользователей системы. После этого сценарий можно вызвать, просто напечатав название файла в командной строке и нажав клавишу [ENTER].

12. пользователи и группы, понятие владельца, группы-владельца, реальные и эффективные идентификаторы

UNIX - многопользовательская операционная система. Пользователи, занимающиеся общими задачами, могут объединяться в группы. Каждый пользователь обязательно принадлежит к одной или нескольким группам. Все команды выполняются от имени определенного пользователя, принадлежащего в момент выполнения к определенной группе.

В многопользовательских системах необходимо обеспечивать защиту объектов (файлов, процессов), принадлежащих одному пользователю, от всех остальных. ОС UNIX предлагает базовые средства защиты и совместного использования файлов на основе отслеживания пользователя и группы, владеющих файлом, трех уровней доступа (для пользователя-владельца, для пользователей группы-владельца, и для всех остальных пользователей) и трех базовых прав доступа к файлам (на чтение, на запись и на выполнение). Базовые средства защиты процессов основаны на отслеживании принадлежности процессов пользователям.

Для отслеживания владельцев процессов и файлов используются числовые идентификаторы. Идентификатор пользователя и группы - целое число (обычно) в диапазоне от 0 до 65535. Присвоение уникального идентификатора пользователя выполняется при заведении системным администратором нового регистрационного имени. Значения идентификатора пользователя и группы - не просто числа, которые идентифицируют пользователя, - они определяют владельцев файлов и процессов. Среди пользователей системы выделяется один пользователь - системный администратор или суперпользователь, обладающий всей полнотой прав на использование и конфигурирование системы. Это пользователь с идентификатором 0 и регистрационным именем root.

При представлении информации человеку удобнее использовать вместо соответствующих идентификаторов символьные имена - регистрационное имя пользователя и имя группы. Соответствие идентификаторов и символьных имен, а также другая информация о пользователях и группах в системе (учетные записи), как и большинство другой информации о конфигурации системы UNIX, по традиции, представлена в виде текстовых файлов. Эти файлы - /etc/passwd, /etc/group и /etc/shadow (в системах с теневым хранением паролей) - детально описаны ниже.

UID (идентификатор) текущего пользователя, в соответствии с /etc/passwd

Это реальный UID текущего пользователя, даже если он временно приобрел права другого пользователя с помощью su. Переменная $UID доступна только для чтения.

"эффективный" идентификационный номер пользователя (Effective User ID)

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

Значение переменной $EUID необязательно должно совпадать с содержимым переменной $UID.

группы, к которым принадлежит текущий пользователь

Это список групп (массив) идентификационных номеров групп для текущего пользователя, как эо записано в /etc/passwd.

13.права на файлы, смена прав, биты suid и sticky

конспект

Кроме основных прав доступа есть ещё дополнительные права. Это SUID бит, SGID бит и STICKY бит. О них и пойдет рассказ в этой статье. SUID бит может быть выставлен для пользователя или для группы. Выставленный SUID бит для пользователя означает, что любой пользователь, у которого есть право на выполнение для файла с SUID битом для пользователя, может выполнить запустить на выполнение этот файл с правами владельца файла. Поясню на примере. Для того, чтобы поменять пароль, необходимо внести изменения в файл /etc/passwd, в некоторых системах, информация о паролях хранится в файле /etc/shadow. Записывать в эти файлы имеет право только пользователь root. Тем не менее, пароль себе поменять может каждый пользователь. Для этого и нужен SUID бит. Он включен у команды для смены пароля – passwd. В данном случае, любой пользователь, выполняющий эту команду, выполняет её с правами пользователя root. Для группы аналогично, запускающий программу с установленным SGID битом для группы, выполняет её с правами той группы, которой принадлежит файл. Естественно, что устанавливать SUID бит для всех остальных просто бессмысленно.

Теперь о STICKY бите. Этот бит имеет значение для папок. Установленный STICKY бит на папку означает, что удалить из такой папки файлы, может только владелец. Чужие файлы удалить нельзя.

Устанавливаются эти биты также с помощью команды chmod:

chmod u+s file – установка SUID бита

chmod g+s file – установка SGID бита

chmod +t directory – установка STICKY бита

В некоторых системах, например в Linux, кроме этих расширенных правд доступа, есть ещё дополнительные атрибуты файлов:

a – разрешает только дописывать в файл, но запрещает удалять и переименовывать.

i – запрещает следующие операции с файлом: редактирование, переименование и удаление.

s – после удаления файла, место, которое он занимал, забивается нулями.

u – после удаления файла есть возможность его восстановить.

Вот наиболее интересные из них. Все они предназначены для повышения безопасности системы. Управление этими атрибутами осуществляется с помощью команды chattr. Формат аналогичен формату команды chmod.

14. условный оператор, конструкции проверки условий, использование && || как аналога условного оператора

практически любой язык программирования включает в себя условные операторы, предназначенные для проверки условий, чтобы выбрать тот или иной путь развития событий в зависимости от этих условий. В Bash, для проверки условий, имеется команда test, различного вида скобочные операторы и условный оператор if/then.

Оператор if/then проверяет -- является ли код завершения списка команд 0 (поскольку 0 означает "успех"), и если это так, то выполняет одну, или более, команд, следующие за словом then.

Существует специальная команда -- [ (левая квадратная скобка). Она является синонимом команды test, и является встроенной командой (т.е. более эффективной, в смысле производительности). Эта команда воспринимает свои аргументы как выражение сравнения или как файловую проверку и возвращает код завершения в соответствии с результатами проверки (0 -- истина, 1 -- ложь).

Начиная с версии 2.02, Bash предоставляет в распоряжение программиста конструкцию [[... ]] расширенный вариант команды test, которая выполняет сравнение способом более знакомым программистам, пишущим на ругих языках программирования. Обратите внимание: [[ -- это зарезервированное слово, а не команда.

Bash исполняет [[ $a -lt $b ]] как один элемент, который имеет код возврата.

Кругле скобки ((...)) и предложение let... так же возвращают код 0, если результатом арифметического выражения является ненулевое значение. Таким образом, арифметические выражения могут учавствовать в операциях сравнения.

Предложение let "1<2" возвращает 0 (так как результат сравнения "1<2" -- "1", или "истина")

((0 && 1)) возвращает 1 (так как результат операции "0 && 1" -- "0", или "ложь")

логическое И (and)

if [ $condition1 ] && [ $condition2 ]

# То же самое, что: if [ $condition1 -a $condition2 ]

# Возвращает true если оба операнда condition1 и condition2 истинны...

if [[ $condition1 && $condition2 ]] # То же верно

# Обратите внимание: оператор && не должен использоваться внутри [... ].

логическое ИЛИ (or)

if [ $condition1 ] || [ $condition2 ]

# То же самое, что: if [ $condition1 -o $condition2 ]

# Возвращает true если хотя бы один из операндов истинен...

if [[ $condition1 || $condition2 ]] # Also works.

# Обратите внимание: оператор || не должен использоваться внутри [... ].

 

 

15. циклы while, код завершения, команда как условие, команды true, break

Оператор while проверяет условие перед началом каждой итерации и если условие истинно (если код возврата равен 0), то управление передается в тело цикла. В отличие от циклов for, циклы while используются в тех случаях, когда количество итераций заранее не известно.

while [condition]

do

command...

done

true (в переводе с английского «истинное») — консольная команда UNIX-совместимых операционных систем, единственное действие которой — возвратить значение 0, рассматриваемое командной оболочкой UNIX как логическое значение «истина».

Команда "break [n]" позволяет выходить из цикла. Если "n"

отсутствует, то это эквивалентно "break 1". "n" указывает число

вложенных циклов, из которых надо выйти, например, "break 3" -

выход из трех вложенных циклов.

В отличие от команды "break" команда "continue [n]" лишь

прекращает выполнение текущего цикла и возвращает на НАЧАЛО

цикла. Она также может быть с параметром. Например, "continue 2"

означает выход на начало второго (если считать из глубины)

вложенного цикла.

16. циклы for in, генерация последовательностей

for arg in [list]

do

команда(ы)...

done

Элементы списка могут включать в себя шаблонные символы.

Есл ключевое слово do находится в одной строке со словом for, то после списка аргументов (перед do) необходимо ставить точку с запятой.

for arg in [list]; do

Цикл for обеспечивает ещё одну возможность многократного выполнения блоков. он отличается от цикла while только тем, что изменяется в самойуправляющей конструкции, а не внутри блока команд. Цикл выполняется до тех пор, пока проверяемое условие остаётся истинным.

общая форма конструкции for выглядит так:

for (инициалицация; условие; приращение) { блок }

Условная часть цикла for в действительности состоит из трёх компонентов.

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

Условие проверяется в начале каждой интерпритации и определяет, должена ли выполняться текущая интерпритация или нет.

Приращение определяет изменение состояния управляющей переменной при каждой интерпритации.

следующий пример демонстрирует простейший случай применения цикла for:

for ($i=0; $i<=3; $i++) { echo "$i" }

Выполнение этого фрагмента даёт следующий результат.

В этом примере управляющей переменной $i инициализируется значением 1. Условие заключается в том, что цикл продолщается до тех пор, пока $i не превысит 3. При каждой интерпритации значение $i увеличивается на 1. В результате команда echo выполняется 3 раза, каждый раз выводя текущее $i.

Этот пример можно записать в другом виде, но с теми же результатами:

for ($i=1; $i<=3; echo "$i", $i++)

Вы можете инициализировать несколько переменных одновременно, разделяя команды запятыми:

for ($x=0,y=0; $x+$y<100; $x+=15)

В управляющих конструкциях цикла for могут отсутствовать любые компоненты. Например вы можете передать ранее инициализированную переменную прямо в цикл, не присваивая ей определённого начального значения. Возможны и другие ситуации - например, приращение переменной цикла может осуществляться в зависимости от некоторого условия, определяемого в цикле. в этом случае приращение не должно указываться в управляющем выражении.

17. работа со строками и столбцами, особенности и применение команд cut, awk, read, head, tail

cut Предназначена для извлечения отдельных полей из текстовых файлов. Напоминает команду print $N в awk, но более ограничена в своих возможностях. В простейших случаях может быть неплохой заменой awk в сценариях. Особую значимость, для команды cut, представляют ключи -d (разделитель полей) и -f (номер(а) поля(ей)).

Head Выводит начальные строки из файла на stdout (по-умолчанию -- 10 строк, но это число можно задать иным). Эта команда имеет ряд интересных ключей.

tail Выводит последние строки из файла на stdout (по-умолчанию -- 10 строк). Обычно используется для мониторинга системных журналов. Ключ -f, позволяет вести непрерывное наблюдение за добавляемыми строками в файл.

Значение, присвоенное командой read переменной variable, будет заменять $variable где бы она не встречалась в программе пользователя. Если программа выполняет команду echo до команды read, то она сможет отобразить только:

Type in...

Команда read будет ждать до тех пор, пока вы не введете строку символов и нажмете клавишу <CR>, тем самым присваивая строку переменной.

10.1.1. Структура программы

Основной операцией awk является сканирование набора вводных строк (одну за другой) для поиска строк, которые соответствуют одному из набора шаблонов или условий, которые вы указали. Для каждого шаблона вы можете указать действие, это действие выполняется с каждой строкой, которая соответствует шаблону.

Структура awk:

шаблон {действие}

шаблон {действие}

Пример.

$ -"address" {print $2, $3}

В этом примере приведена типичная программа awk, состоящая из одного выражения шаблон-действие. Программа печатает второе и третье поля каждой вводной строки, в которой первое поле является "address".

Любой шаблон или действие в выражении шаблон-действие может быть опущен. Отсутствие части "действие" означает печать соответствующих шаблону строк. Отсутствие шаблона означает, что действие выполняется над каждой строкой.

Вы можете запустить awk двумя способами. Первый: вы можете задать командную строку:

awk 'шаблон-действие' [список вводных файлов] чтобы выполнить шаблон-действие в перечисленных вводных файлах. Например,

awk '{print $2, $3}' файл1 файл2

Обратите внимание, что выражение шаблон-действие заключено в одиночные кавычки. Это защищает символы типа $ от интерпретации командным языком shell и позволяет также программе обрабатывать более одной строки.

Если файлы не указаны в командной строке, awk читает из стандартного файла ввода. Стандартный файл ввода вы можете также указать с помощью "-". Например:

awk '{print $3, $4}' файл1 -

awk читает сначала из файл1 и затем из стандартного файла ввода. Если программа является большой по объему, то удобнее использовать следующий формат:

awk -f программа [список вводных файлов]

Например, следующая командная строка говорит, что нужно выбрать и выполнить myprogram, взяв ввод из файла file1:

awk -f myprogram file1

10.1.2. Поля

Обычно awk считывает одну строку или запись за один раз. Записью является последовательность символов, заканчивающаяся символом "новая строка". Затем awk разделяет каждую запись на поля. Поле не может быть пустой строкой и символом табуляции.

В качестве ввода для программы awk в этом разделе будем использовать файл countries, который содержит информацию о 10 странах. Каждая запись содержит имя страны, занимаемую площадь в квадратных километрах, ее население в миллионах и континент, на котором она находится. Пустое пространство между колонками является табуляцией при вводе.

USSR 8650 262 Asia

Canada 3852 24 North America

China 3692 866 Asia

USA 3615 219 North America

Brazil 3286 116 South America

Australia 2968 14 Australia

India 1269 637 Asia

Argentina 1072 26 South America

Sudan 968 19 Africa

Algeria 920 18 Africa

Этот файл данных удобен для обработки - смесь слов и цифр, разделенных на поля символами "пробел" и "табуляция".

Число полей в записи определяется полем разделителем. Поля обычно разделяются последовательностью пробелов и/или табуляцией, так что первая запись countries будет иметь 4 поля, вторая - 5 и т.д. Возможно установить разделитель поля точно на символ табуляции, так что каждая строка будет иметь 4 поля, и можно искать значение данных.

При описании по умолчанию будем использовать: поля разделяются табуляцией или пробелами; первое поле в строке обозначается $1, второе - $2 и т.д. Вводная запись обозначается $0.




Дата добавления: 2014-12-19; просмотров: 37 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.021 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав