Пошаговое руководство по созданию скрипта оболочки в Linux
10:05, 05.06.2026
Создание скриптов оболочки — отличный способ автоматизировать задачи и эффективно выполнять команды в Linux. Это руководство поможет вам начать работу с основ, даже если вы только начинаете.
Написание скрипта оболочки
Чтобы создать скрипт оболочки, откройте любой текстовый редактор, например nano, vim или gedit.
Введите свои команды и сохраните файл с расширением .sh.
Пример:
#!/bin/bash
echo "Hello, World!"
Чтобы сделать скрипт исполняемым, воспользуйтесь этой командой:
chmod +x myscript.sh
Затем запустите его:
./myscript.sh
Добавление комментариев в скрипт оболочки
Комментарии помогают объяснить ваш код. В скриптах оболочки комментарии начинаются с #.
Пример:
# Это комментарий
echo "Запуск скрипта..."
Используйте комментарии, чтобы сделать ваш код более понятным как для вас, так и для других.
Работа с переменными в скриптах оболочки
Переменные хранят значения, которые вы можете использовать повторно.
Пример:
name="Alice"
echo "Hello, $name"
Нет необходимости объявлять тип. Вы можете напрямую присваивать значение переменной и использовать её.
Указание интерпретатора скрипта оболочки
Первая строка в скрипте оболочки называется shebang. Она указывает системе, какой интерпретатор использовать.
Пример:
#!/bin/bash
Всегда включайте эту строку в начале вашего скрипта, чтобы он работал должным образом.
Использование операторов сравнения
Операторы сравнения позволяют сравнивать значения, что полезно для принятия решений в скриптах.
Сравнение целочисленных значений
Для числовых сравнений используйте следующие операторы:
Сравнение целых чисел
Оператор | Описание |
-eq | равно |
-ne | не равно |
-gt | больше |
-ge | больше или равно |
-lt | меньше |
-le | меньше или равно |
Пример:
a=10
b=5
if [ $a -gt $b ]; then
echo "$a больше $b"
fi
Сравнение строк в скриптах оболочки
Для сравнения текстовых значений (строк) используйте следующие операторы:
Сравнение строк
Оператор | Описание |
== | равно |
!= | не равно |
\< | меньше, в алфавитном порядке ASCII |
\> | больше, в алфавитном порядке ASCII |
Пример:
str1="apple"
str2="banana"
if [ "$str1" \< "$str2" ]; then
echo "$str1 идет перед $str2 по алфавиту"
fi
Реализация условных операторов
Условные операторы позволяют скрипту выбирать, что делать, на основе условия.
Использование оператора if
Оператор if проверяет условие и выполняет команды, если оно выполняется.
Пример:
if [ -e myfile.txt ]; then
echo "Файл существует"
fi
Реализация логики If-Else
Вы можете использовать else для обработки случаев, когда условие неверно.
Пример:
if [ -d myfolder ]; then
echo "Папка существует"
else
echo "Папка не существует"
fi
Вы также можете использовать elif для дополнительных условий:
if [ $a -gt $b ]; then
echo "A больше"
elif [ $a -eq $b ]; then
echo "A равно"
else
echo "A меньше"
fi
Понимание циклов в скриптах оболочки
Циклы позволяют повторять команды несколько раз. Существует два распространенных цикла: while и for.
Цикл While
Цикл while выполняется, пока условие истинно.
Пример:
count=1
while [ $count -le 5 ]; do
echo "Count is $count"
((count++))
done
Цикл For
Цикл for проходит по списку или диапазону.
Пример:
for i in 1 2 3 4 5; do
echo "Число: $i"
done
Вы также можете проходить по файлам:
for file in *.txt; do
echo "Найден файл: $file"
done
Обработка позиционных аргументов в скриптах
Скрипты оболочки могут принимать аргументы из командной строки.
Пример:
#!/bin/bash
echo "Имя скрипта: $0"
echo "Первый аргумент: $1"
echo "Второй аргумент: $2"
Запустите скрипт:
./myscript.sh hello world
Вывод:
Имя скрипта: ./myscript.sh
Первый аргумент: hello
Второй аргумент: world
Перехват и сохранение результатов команд
Вы можете сохранить результат команды, используя $(command).
Пример:
current_date=$(date)
echo "Сегодня $current_date"
Это сохраняет выходные данные date в переменной.
Понимание кодов завершения в командах оболочки
Каждая команда возвращает код завершения. Вы можете проверить его с помощью $?.
- 0 означает успех.
- Любое другое значение означает, что произошла ошибка.
Пример:
ls /notfound
if [ $? -ne 0 ]; then
echo "Каталог не найден"
fi
Это помогает выявлять ошибки в скриптах.