Перейти к содержимому

Скрипты Bash

Скрипт начинается со строки, которая указывает интерпретатор (шебанг):

#!/bin/bash

Написание скриптов на Bash (Losst)

Обозначение переменной в Bash:

Переменные в Bash

Принцип определения исполняемого файла:

Как определяется исполняемый файл

Специальные параметры:

Специальные параметры, часть 1

Специальные параметры, часть 2

Код возврата последней команды ($?) описан на странице Процессы и потоки вывода.

Чтобы скрипт запускался по имени, добавьте его каталог в $PATH.

  1. Убедитесь, что у скрипта есть право на исполнение:

    Окно терминала
    chmod +x my_script.sh
  2. Добавьте каталог в PATH. Для этого в конец файла настроек шелла (обычно ~/.bashrc или ~/.bash_profile) допишите строку:

    Окно терминала
    export PATH=$PATH:"/home/<user>/scripts"
  3. Примените изменения:

    Окно терминала
    source ~/.bashrc

Теперь скрипты из этого каталога запускаются без ./.

PATH: пример 1

PATH: пример 2

PATH: пример 3

Окно терминала
a=5
b=5
if [ "$a" = "$b" ]; then
echo "A = B"
else
echo "A не равно B"
fi

case сопоставляет выражение (например, переменную) с набором значений и выполняет команды первого совпавшего варианта.

Окно терминала
case "$variable" in
"option1") command ;;
"option2") command ;;
*) command ;;
esac

Конструкция case (metanit.com)

Арифметические операции в Bash-скрипте

Арифметические операции

let — встроенная команда bash для базовой арифметики. Результат на стандартный вывод она не печатает:

Окно терминала
let <арифметическая операция>

expr похож на let, но по умолчанию печатает ответ. Результат можно сохранить в переменную через подстановку команды. Вокруг операторов нужны пробелы, а выражения с пробелами не нужно заключать в кавычки:

Окно терминала
x=$(expr 2 + 2)

Выполняет команды, пока условие истинно.

Окно терминала
while [CONDITION]
do
[COMMANDS]
done

Цикл while в Bash

Окно терминала
my_function() {
команда1
команда2
}

Имя функции не должно совпадать с именем существующей команды или функции. Команды в теле функции пишутся с новой строки.

Функции bash в скриптах (Losst)

Настройка строки приглашения Bash (ZENCOD)

Настройка приглашения

Bash Heredoc

Heredoc