bash.pptx
- Количество слайдов: 13
Командный интерпретатор bash
Пример: Сценарий очистки логфайлов в /var/log #!/bin/bash # cleanup cd /var/log cat /dev/null > messages cat /dev/null > wtmp echo "Лог-файлы очищены. "
Запуск сценария 1. bash scriptname 2. Выдача прав: chmod 555 scriptname (выдача прав на чтение/исполнение любому пользователю в системе) chmod +rx scriptname (выдача прав на чтение/исполнение любому пользователю в системе) chmod u+rx scriptname (выдача прав на чтение/исполнение только владельцу скрипта) Запуск: . /scriptname
Упражнение Что произойдет при запуске файла следующего содержания? #!/bin/rm WHATEVER=65 echo “Hello World!" exit $WHATEVER
Внутренние команды echo (выводит (на stdout) выражение или содержимое переменной) printf (форматированный вывод) read (читает значение переменной с устройства стандартного ввода – stdin) cd, pwd (переменная $PWD), pushd, popd, dirs (переменная $DIRSTACK) let (присвоение значений) set (изменяет значения внутренних переменных сценария) unset (удаление переменной) export (экспортирует переменную, делая ее доступной дочерним процессам) getopts (разбора аргументов, передаваемых сценарию из командной строки) source, . (подключение внешних файлов) exit (безусловное завершение работы сценария) exeс (заменяет текущий процесс новым процессом)
Условный оператор if [ условие ]; then блок команд else блок команд fi
Операторы сравнения Арифметические операторы: -lt - less then - меньше (<) -gt - greater then - больше (>) -le - less or equal - меньше или равно (<=) -ge - greater or equal - больше или равно (>=) -eq - equal - равно (==) -ne - not equal - не равно (!=) Сравнение строк: STR 1 = STR 2 - равно STR 1 != STR 2 - не равно STR 1 < STR 2 - меньше STR 1 > STR 2 - больше -n STR 1 - возвращает 0 если строка ненулевая (имеет хотя бы один символ) -z STR 1 - возвращает 0 если строка нулевой длины.
Циклы for переменная in последовательность значений do команды done for ((i=1; i<6; i++)) do echo i=$i done while выражение do команды done until выражение do команды done
Примеры S="1 2 3 a b c" for i in $S do echo i=$i done for i in $(seq 2 2 10) do echo i=$i done i=1 while [ $i -lt 7 ] do echo $i let i=i+1 done
Оператор ветвления case значение in (шаблон) блок команд ; ; . . . (шаблон) блок команд ; ; esac
Пример case $1 in [a, b, c, d]) #значения заданные в шаблоне явно echo "a b c d" ; ; [0 -9]) #последовательность числовых значений echo "Это цифра $1" ; ; [a-z]) #последовательность echo "Это буква $1" ; ; ? ? ) echo "Это два любых символа" ; ; stop|restart|start) echo "Это слово stop или restart или start" ; ; *) echo "Другое значение" ; ; esac
Функции function имя_функции { тело функции } имя_функции () { тело функции }
Пример function primer { if [ $# -ne 0 ] then local a=1 echo "Количество переданных параметров - $#" for i in $@ do echo "$a-й параметр - $i" let a++ done return 0 else echo "Параметры не передавались" return 1 fi } echo "Вызываем функцию с параметрами: " primer a b c echo $? echo "Вызываем функцию без параметров: " primer echo $?
bash.pptx