Справочник от Автор24
Поделись лекцией за скидку на Автор24

Написание сценариев командной оболочки BASH

  • ⌛ 2021 год
  • 👀 282 просмотра
  • 📌 199 загрузок
  • 🏢️ МИРЭА
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Написание сценариев командной оболочки BASH» pdf
Дисциплина: «Операционные системы» Преподаватель: Алексеев Кирилл Анатольевич учебный год 2020/2021 online.mirea.ru Тема 2 Оболочки операционных систем Занятие 2.7 лекция НАПИСАНИЕ СЦЕНАРИЕВ КОМАНДНОЙ ОБОЛОЧКИ BASH online.mirea.ru НАПИСАНИЕ СЦЕНАРИЕВ КОМАНДНОЙ ОБОЛОЧКИ BASH Учебные вопросы: 1) Общие сведения о сценариях командной оболочки bash. 2) Управляющая конструкция if-then. 3) Сравнение чисел и строк. 4) Проверки файлов. 5) Организация циклов в bash. 1)потоками Литература Основная: 1) Купер Мендель. Искусство программирования на языке сценариев командной оболочки. 2) Bash Reference Manual (http://www.gnu.org/software/bash/manual/bash.html) Дополнительная: 1) Справочные страницы ОС GNU/Linux (man <имя команды>) online.mirea.ru 1. Общие сведения о сценариях командной оболочки bash Командная оболочка (интерпретатор командной строки, command line shell,command-line interpreter) – программа, считывающая строки из терминала, текстового файла и других источников и интерпретирующая их в качестве команд некоторой системы. Режимы исполнения команд: • интерактивный • пакетный. pwd ; whoami Используя подобный подход, вы можете совмещать сколько угодно команд в одной строке, ограничение – лишь в максимальном количестве аргументов, которое можно передать программе. Определить это ограничение можно с помощью команды: getconf ARG_MAX online.mirea.ru 1. Общие сведения о сценариях командной оболочки bash Особенности запуска сценария командной оболочки 1) Первая строка файла – указание интерпретатора содержимого запускаемого файла: #!/bin/bash 2) Стандартное расширение файла: .sh 3) Следует устанавливать права доступа «на исполнение» к файлу: сhmod +x my_script.sh Попытка запуска файла сценария с неправильно настроенными разрешениями online.mirea.ru Успешный запуск bash-скрипта 2. Управляющая конструкция if-then В некоторых сценариях требуется управлять потоком исполнения команд. Например, если некое значение больше пяти, нужно выполнить одно действие, в противном случае – другое. Подобное применимо в очень многих ситуациях, и здесь нам поможет управляющая конструкция if-then. В наиболее простом виде она выглядит так: if команда then команды fi #!/bin/bash if pwd then echo "It works" fi Поиск пользователя #!/bin/bash user=likegeeks if grep $user /etc/passwd then echo "The user $user Exists" fi online.mirea.ru Управляющая конструкция if-then-else #!/bin/bash user=anotherUser if grep $user /etc/passwd then echo "The user $user Exists" else echo "The user $user doesn’t exist" fi Запуск скрипта с конструкцией if-then-else online.mirea.ru Управляющая конструкция if-then-else #!/bin/bash user=anotherUser if grep $user /etc/passwd then echo "The user $user Exists" elif ls /home then echo "The user doesn’t exist but anyway there is a directory under /home" fi Пример скрипта с конструкцией if-then с дополнительным условием online.mirea.ru 3. Сравнение чисел и строк В скриптах можно сравнивать числовые значения: n1 -eq n2 Возвращает истинное значение, если n1 равно n2. n1 -ge n2 Возвращает истинное значение, если n1 больше или равно n2. n1 -gt n2 Возвращает истинное значение, если n1 больше n2. n1 -le n2 Возвращает истинное значение, если n1 меньше или равно n2. n1 -lt n2 Возвращает истинное значение, если n1 меньше n2. n1 -ne n2 Возвращает истинное значение, если n1 не равно n2. online.mirea.ru Сравнение чисел #!/bin/bash val1=6 if [ $val1 -gt 5 ] then echo "The test value $value1 is greater than 5" else echo "The test value $value1 is not greater than 5" fi Сравнение чисел в скриптах online.mirea.ru Сравнение строк В сценариях можно сравнивать строковые значения: str1 = str2 Проверяет строки на равенство, возвращает истину, если строки идентичны. str1 != str2 Возвращает истину, если строки не идентичны. str1 < str2 Возвращает истину, если str1 меньше, чем str2. str1 > str2 Возвращает истину, если str1 больше, чем str2. -n str1 Возвращает истину, если длина str1 больше нуля. -z str1 Возвращает истину, если длина str1 равна нулю. Операторы «>» и «<» необходимо экранировать с помощью обратной косой черты, иначе скрипт будет работать неправильно, хотя сообщений об ошибках и не появится. Скрипт интерпретирует знак «>» как команду перенаправления вывода. online.mirea.ru Сравнение строк #!/bin/bash user="likegeeks" if [$user = $USER] then echo "The user $user is the current logged in user" fi Сравнение строк в скриптах online.mirea.ru Сравнение строк (пример 2) #!/bin/bash val1=text val2="another text" if [ $val1 \> "$val2" ] then echo "$val1 is greater than $val2" else echo "$val1 is less than $val2" fi Сравнение строк online.mirea.ru 4. Проверки файлов Нижеприведённые команды используются в bash-скриптах чаще всего. Они позволяют проверять различные условия, касающиеся файлов. Вот список этих команд: -d file Проверяет, существует ли файл, и является ли он директорией. -e file Проверяет, существует ли файл. -f file Проверяет, существует ли файл, и является ли он файлом. -r file Проверяет, существует ли файл, и доступен ли он для чтения. -s file Проверяет, существует ли файл, и не является ли он пустым. -w file Проверяет, существует ли файл, и доступен ли он для записи. -x file Проверяет, существует ли файл, и является ли он исполняемым. file1 -nt file2 Проверяет, новее ли file1, чем file2. file1 -ot file2 Проверяет, старше ли file1, чем file2. -O file Проверяет, существует ли файл, и является ли его владельцем текущий пользователь. -G file Проверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя. online.mirea.ru 4. Проверки файлов #!/bin/bash mydir=/home/likegeeks if [ -d $mydir ] then echo "The $mydir directory exists" cd $mydir ls else echo "The $mydir directory does not exist" fi Вывод содержимого директории online.mirea.ru 5. Организация циклов в bash Циклы for Оболочка bash поддерживает циклы for, которые позволяют организовывать перебор последовательностей значений. Базовая структура таких циклов: for var in list do команды done #!/bin/bash for var in first second third fourth fifth do echo "The $var item" done Простой цикл for online.mirea.ru Циклы for в bash Перебор сложных значений В списке, использованном при инициализации цикла for, могут содержаться не только простые строки, состоящие из одного слова, но и целые фразы, в которые входят несколько слов и знаков препинания. #!/bin/bash for var in first "the second" "the third" "I’ll do it" do echo "This is: $var" done Перебор сложных значений online.mirea.ru Инициализация цикла списком, полученным из результатов работы команды Ещё один способ инициализации цикла for заключается в передаче ему списка, который является результатом работы некоей команды. Тут используется подстановка команд для их исполнения и получения результатов их работы. #!/bin/bash file="myfile" for var in $(cat $file) do echo " $var" done Цикл, который перебирает содержимое файла online.mirea.ru Разделители полей в bash Оболочка bash считает разделителями полей следующие символы: ● Пробел ● Знак табуляции ● Знак перевода строки Если bash встречает в данных любой из этих символов, он считает, что перед ним – следующее самостоятельное значение списка. Разделители полей указываются в переменной окружения, которая называется IFS (Internal Field Separator). Можно временно изменить переменную среды IFS. Например, если необходимо установить в качестве разделителя полей только перевод строки, следует в сценарии указать: IFS=$'\n' online.mirea.ru Построчный обход содержимого файла в цикле for Ещё один способ инициализации цикла for заключается в передаче ему списка, который является результатом работы некоей команды. Тут используется подстановка команд для их исполнения и получения результатов их работы. #!/bin/bash file="/etc/passwd" IFS=$'\n' for var in $(cat $file) do echo " $var" done Построчный обход содержимого файла в цикле for online.mirea.ru Обход файлов, содержащихся в директории Один из самых распространённых вариантов использования циклов for в bashскриптах заключается в обходе файлов, находящихся в некоей директории, и в обработке этих файлов. #!/bin/bash for file in /home/likegeeks/* do if [ -d "$file" ] then echo "$file is a directory" elif [ -f "$file" ] then echo "$file is a file" fi done Вывод содержимого папки online.mirea.ru
«Написание сценариев командной оболочки BASH» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot