- •Командный интерпретатор, внешние и внутренние команды, интерпретация командной строки.
- •2. Формат команды linux, ключи, параметры, ключи с параметрами, длинные и короткие ключи
- •Большинство команд Linux имеют следующую структуру:
- •7. Стандартные потоки, операторы перенаправления потоков, подстановка команд
- •Потоки ввода-вывода
- •8. Работа с текстовыми файлами - вывод, фильтрация, конвейеры
- •9. Параметры, подстановка параметров, позиционные параметры
- •Замена тильды
- •Подстановка значений параметров
- •12. Пользователи и группы, понятие владельца, группы-владельца, реальные и эффективные идентификаторы
- •13.Права на файлы, смена прав, биты suid и sticky
- •16. Циклы for in, генерация последовательностей
- •17. Работа со строками и столбцами, особенности и применение команд cut, awk, read, head, tail
- •10.1.1. Структура программы
- •10.1.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" }
Выполнение этого фрагмента даёт следующий результат.
1
2
3
В этом примере управляющей переменной $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>, тем самым присваивая строку переменной.