Купить Корзина
  • Домены и сайты
  • Облако и IT-инфраструктура
  • Вход

Получить консультацию

Ответим на вопросы, расскажем о конфигурациях, поможем с переносом, подберем оборудование, подготовим коммерческое предложение

Нажимая кнопку «Отправить» я даю согласие на обработку персональных данных и подтверждаю, что ознакомился с Политикой конфиденциальности и правилами пользования сайтом

Персональный менеджер ответит на ваши вопросы и проведет через все этапы заключения договора: — подберет оборудование — сформирует коммерческое предложение — поможет с миграцией сервера к нам

Нажимая кнопку «Отправить» я даю согласие на обработку персональных данных и подтверждаю, что ознакомился с Политикой конфиденциальности и правилами пользования сайтом

Или просто оставьте номер телефона, и мы перезвоним вам

  • Телефон в Москве

    +7 495 580-11-11
  • Бесплатный звонок по России

    8 800 555-34-78
  • Или обратитесь в наши офисы

    Региональные номера
    1. База знаний
    2. Рег.облако
    3. Облачные серверы
    4. Работа с сервером
    5. Написание скриптов в Linux Bash

    Написание скриптов в Linux Bash

    В этой статье мы расскажем, что такое Bash script и как его написать.

    Что такое Bash

    Bash (Bourne-Again SHell) — это командная оболочка, которая используется Uinx-подобных в операционных системах. Она была разработана как альтернатива оригинальной оболочке Bourne shell и является оболочкой по умолчанию в большинстве дистрибутивов Linux. Bash позволяет пользователям взаимодействовать с операционной системой, вводя команды в окне терминала. Также с помощью интерпретатора Bash можно выполнять скрипты, что позволяет автоматизировать повторяющиеся задачи.

    Bash-скрипт — это файл с последовательностью команд, которые по очереди считываются и выполняются интерпретатором Bash. Сценарии Bash универсальны и могут использоваться для автоматизации различных задач, таких как системное администрирование, управление файлами и процессами.

    Выбор текстового редактора

    Для написания скриптов на Bash можно использовать любой текстовый редактор. Чаще всего используют:

    • Nano — самый простой и удобный вариант. По умолчанию установлен на большинство дистрибутивов Linux;
    • Vim — популярный редактор с гибкими настройками и широким функционалом. Подойдет более опытным пользователями, новичкам будет тяжело разобраться в нем;
    • Emacs — многофункциональный текстовый редактор. Его главное преимущество — возможность запустить интерпретатор Bash прямо в редакторе. Так вы сможете протестировать сценарий, не закрывая редактор.

    Шебанг

    Любой скрипт в Unix-подобных системах начинается со строчки под названием шебанг (shebang). В ней мы указываем интерпретатор, который используется для выполнения скрипта. Шебанг начинается с символов #!, после которых прописывают путь до интерпретатора. Shebang для Bash выглядит следующим образом:

    #!/bin/bash

    Комментарии

    Для удобства при написании скрипта вы можете добавлять комментарии. Любой комментарий начинается с символа #. Интерпретатор при выполнении сценария игнорирует комментарии. Как правило, их используют для описания функций кода. Пример комментария:

    # Комментарий

    Как создать скрипт

    Прежде всего необходимо создать пустой файл скрипта. Сделать это можно при помощи команды touch. Например, чтобы создать файл myscript.sh, нужно ввести команду:

    touch myscript.sh

    Далее необходимо открыть файл с помощью текстового редактора. К примеру, если вы хотите открыть файл в редакторе nano, нужно ввести команду:

    nano myscript.sh

    Теперь можно приступить к написанию скрипта. В первой строке нужно указать шебанг. Затем необходимо прописать команды Bash в той последовательности, в которой они должны выполняться. Например, скрипт для вывода на экран фразы «Hello, World!» будет выглядеть следующим образом:

    #!/bin/bash
    echo "Hello, World!"

    После необходимо сохранить изменения. Чтобы сохранить изменения и выйти из редактора nano, нужно нажать Ctrl+X, Y, Enter.

    Запуск скрипта

    Чтобы запустить script в Linux, ему нужно дать права на выполнение. Сделать это можно с помощью команды chmod. Например, чтобы сделать исполняемым файл myscript.sh, нужно ввести команду:

    chmod +x myscript.sh

    Теперь скрипт можно запустить. Чтобы выполнить скрипт myscript.sh, нужно ввести в терминале:

    ./myscript.sh

    Результат выполнения скрипта:

    bash 1

    Аргументы

    Аргументы — это параметры, которые передаются программе при ее выполнении. Допустим, вы хотите посмотреть ресурсные записи домена example.com с помощью утилиты host. Для этого нужно будет ввести команду host example.com. В этом примере example.com — аргумент, который вы передали программе host.

    В Bash аргументы обозначаются следующим образом: $1 — первый аргумент, $2 — второй аргумент, $3 — третий аргумент и так далее.

    В качестве примера создадим скрипт со следующим содержимым:

    #!/bin/bash
    echo "Hello, $1"

    Затем запустим скрипт, передав ему аргумент:

    ./myscript.sh Ivan

    И увидим следующий вывод:

    bash 2

    Также вы можете использовать специальные параметры:

    • $0 — имя скрипта,
    • $# — количество параметров, переданных скрипту,
    • $* — список всех переданных параметров в виде строки,
    • $@ — список всех переданных параметров в виде массива данных,
    • $? — код завершения скрипта. Код 0 означает успешное выполнение, а любое число, отличное от 0, указывает на сбой.

    Например, создадим скрипт, в котором будут выводиться 2 аргумента и список всех переданных аргументов:

    #!/bin/bash
    echo "Your first name: $1"
    echo "Your last name: $2"
    echo "Hello, $*"

    Запустим скрипт, передав ему 2 аргумента:

    ./myscript.sh Ivan Ivanov

    И получим такой вывод:

    bash 3

    Переменные

    Переменные в Bash используют для хранения различных типов данных, например, строк или чисел. Чтобы создать переменную, необходимо присвоить ей значение с помощью знака равно (=).

    Важно

    Между названием переменной, знаком равно (=) и значением переменной не должно быть пробелов. Значение переменной указывается в кавычках.

    Пример:

    name=”Ivan”

    Чтобы вывести значение переменной, укажите ее название после команды echo со знаком $:

    echo $name

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

    #!/bin/bash
    echo "Enter your first name"
    read firstname
    echo "Enter your last name"
    read lastname
    echo "Hello, $firstname $lastname"

    Этот скрипт запрашивает имя и фамилию пользователя, сохраняет их в качестве переменных, а затем выводит значения переменных:

    bash 4

    Также в скриптах можно использовать переменные окружения — это специальные переменные, которые определяются оболочкой и используются программами во время выполнения. К ним относятся такие переменные, как $PWD, $PATH, $HOME.

    Кроме того, переменные можно использовать для передачи значений между различными командами и скриптами. К примеру, если необходимо передать значение переменной из одного скрипта в другой, нужно использовать команду export:

    export имя_переменной

    Условные операторы

    Условные операторы в сценариях Bash используются для выполнения определенных действий в зависимости от истинности или ложности заданного условия. Эти операторы заключаются в скобки и передаются в команду if.

    Синтаксис условных операторов:

    if  [ условие ]
    then
      команды, которые должны быть выполнены, если указанное условие окажется верным
    fi

    Внимание

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

    Пример:

    #!/bin/bash
    echo "Enter the number: "
    read num
    if (( $num % 2 == 0 ))
    then
      echo "Number $num is even"
    else
      echo "Number $num is odd"
    fi

    Этот скрипт определяет, четное число или нечетное, путем деления введенного вами числа на 2.

    bash 5

    Также в условных конструкциях можно использовать следующие операторы сравнения:

    • -gt — больше,
    • -lt — меньше,
    • -eq — равно,
    • -ne — не равно,
    • -ge — больше или равно,
    • -le — меньше или равно.

    Пример:

    #!/bin/bash
    echo "Enter the first number: "
    read num1
    echo "Enter the second number: "
    read num2
    if [ $num1 -lt $num2 ]
    then
      echo "$num1 is less than $num2"
    fi
    if [ $num1 -gt $num2 ]
    then
      echo "$num1 is greater than $num2"
    fi
    if [ $num1 -eq $num2 ]
    then
      echo "$num1 is equal to $num2"
    fi

    Этот скрипт сравнивает 2 числа и выводит информацию о том, больше, меньше или равно первое число второму.

    bash 6

    Конструкция switch-case

    Конструкция switch-case в сценариях Bash упрощает задачу создания условных операторов, которые сравнивают переменные с несколькими возможными значениями.

    Синтаксис конструкции switch-case выглядит следующим образом:

    case variable in
        condition1)
            command
            ;;
        condition2)
            command
            ;;
           *)
            default command
            ;;
    esac

    где:

    • variable — переменная, которую необходимо проверить,
    • condition — возможное значение, которое необходимо проверить,
    • command — команды, которые необходимо выполнить в зависимости от значения переменной,
    • * — обработчик, который будет использоваться, если ни одно из значений не соответствует переменной.

    Пример скрипта, который определяет официальный язык страны по ее названию:

    #!/bin/bash
    echo -n "Enter the name of a country: "
    read COUNTRY
    echo -n "The official language of $COUNTRY is "
    case $COUNTRY in
      Russia)
        echo -n "Russian"
        ;;
     Kazakhstan)
        echo -n "Kazakh"
        ;;
      Italia)
        echo -n "Italian"
        ;;
      *)
        echo -n "unknown"
        ;;
    esac

    Скрипт попросит вас ввести страну. Например, если вы наберете «Russia», это будет соответствовать первому значению, и команда echo выведет следующее:

    bash 7

    Если вы введете страну, которая не соответствует ни одному значению, вывод будет следующим:

    bash 8

    Циклы

    Циклы в Bash используются для выполнения определенных частей кода заданное количество раз. Существует два вида циклов: for и while.

    Синтаксис цикла for:

    for переменная in список
    do
    команды
    done

    В этом случае переменная принимает значение элемента из списка, после чего для каждого отдельного элемента выполняются команды, указанные между «do» и «done».

    Пример:

    #!/bin/bash
    for i in {1..5}
    do
       echo "Number $i"
    done

    В этом скрипте переменная будет принимать значение от 1 до 5. Для каждого значения будет выполняться команда echo.

    bash 9

    Цикл while используется для непрерывного выполнения команд до тех пор, пока условие не станет ложным.

    Синтаксис цикла while:

    while [ условие ]
    do
      команды
    done

    Условие, указанное в квадратных скобках, проверяется перед каждой итерацией цикла. Команды будут выполняться повторно до тех пор, пока условие остается истинным.

    Пример:

    #!/bin/bash
    x=1
    while [ $x -le 5 ]
    do
      echo "Count $x"
      x=$(( $x + 1 ))
    done

    В этом скрипте значение х увеличивается на 1 после каждой итерации. Цикл завершается, когда х становится равен 5.

    bash 10

    При помощи while можно сделать бесконечный цикл:

    while true
     do
     echo "infinite loops"
    done

    Это может понадобиться, когда какое-то значение нужно проверять постоянно, либо если нужно запускать что-то чаще, чем позволяет cron.

    Функции

    Функции Bash — это набор команд, объединенных в группы, которые можно вызывать множество раз. Назначение функций — помочь вам сделать ваши bash-скрипты более читабельными и избежать повторного написания одного и того же кода. Функции можно вызывать из скрипта с помощью названия функции.

    Синтаксис функции:

    название_функции () {
        команды
    }

    Пример:

    #!/bin/bash
    
    hello_world () {
       echo “Hello, world!”
    }
    
    hello_world #Вызов функции

    Здесь мы создали функцию hello_world, добавили в нее команду echo «Hello, world!», а затем вызвали эту команду с помощью функции.

    Результат:

    bash 11

    Функции также можно передавать любые аргументы. Пример функции с аргументами:

    #!/bin/bash
    
    hello_world () {
       echo “Hello, $1”
    }
    
    hello_world Ivan #Вызов функции

    Вывод:

    bash 12

    Кроме того, функции могут возвращать значения. Для этого нужно использовать ключевое слово return и аргумент $?. Пример:

    #!/bin/bash
    
    my_function () {
      echo "some result"
      return 100
    }
    
    my_function #Вызов функции
    echo $? #Вывод

    Результат:

    bash 13

    Есть и другой способ возврата значения из функции. Пример:

    #!/bin/bash
    
    my_function () {
      local func_result="some result"
      echo "$func_result"
    }
    
    func_result="$(my_function)"
    echo $func_result

    В этом примере мы сохранили результат вывода функции в переменную, а затем вывели эту переменную.

    Результат:

    bash 14

    Помогла ли вам статья?

    Спасибо за оценку. Рады помочь 😊

     👍
    Специальные предложения
    • Бесплатный хостинг для сайта
    • Дешевый хостинг
    • Бесплатный VPS-сервер
    • Дешёвые VPS
    Рассылка Рег.ру

    Лайфхаки, скидки и новости об IT

    Даю согласие на получение рекламных и информационных материалов

    Домены и сайты
    • Домены
    • Хостинг
    • Создание сайтов
    • SSL-сертификаты
    • VPS и VDS серверы
    • Whois
    • Магазин доменов
    Облако
    и IT-инфраструктура
    • Облачные серверы
    • Частное облако
    • Облачное хранилище
    • Kubernetes в облаке (K8S)
    • Облачные базы данных
    • Выделенные серверы
    Полезное
    • Стоимость услуг
    • Cпособы оплаты
    • База знаний
    • Документы
    • ЭДО
    • Партнерам
    • Сообщить о нарушении
    • РБК: новости России и мира сегодня
    • Новости компаний РФ
    • РБК Инвестиции: курсы валют
    Компания
    • О компании
    • Контакты
    • Офисы
    • Новости
    • Акции и скидки
    • Блог
    • Отзывы клиентов
    8 800 555-34-78 Бесплатный звонок по России
    +7 495 580-11-11 Телефон в Москве
    • vk
    • telegram
    • ok
    • moikrug
    • youtube
    • twitter
    • Облачная платформа Рег.ру включена в реестр российского ПО Запись №23682 от 29.08.2024
    • © ООО «РЕГ.РУ»
    • Политика конфиденциальности
      Политика обработки персональных данных
      Правила применения рекомендательных технологий
      Правила пользования
      и другие правила и политики
    • Нашли опечатку?
      Выделите и нажмите Ctrl+Enter
    • Мы используем cookie и рекомендательные технологии для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера