Основи Bash-скриптів: запуск і змінні (Частина 1)

08.01.2026 2 хвилин Автор: Lady Liberty

Bash у Linux є базовим інструментом для автоматизації повсякденних задач. Він дозволяє об’єднувати команди у скрипти та запускати їх без постійного повторення одних і тих самих дій у терміналі. Це особливо корисно для тих, хто працює з системою регулярно і хоче зробити свою роботу більш впорядкованою.

У статті розглядаються основи роботи з Bash і пояснюється, як shell взаємодіє з операційною системою. Матеріал допомагає зрозуміти, чому скрипти виконуються інакше, ніж звичайні команди, і як Bash використовується для автоматизації процесів у Linux. Стаття підійде для користувачів, які роблять перші кроки в Bash, а також для тих, хто хоче краще орієнтуватися в логіці роботи shell-скриптів.

Створення і запуск першого Bash-скрипта

Знайомство з shell-скриптами починається саме з цього кроку. Тут показано, як створити найпростіший Bash-скрипт і як його запустити в Linux.

Якщо доводиться робити одне й те саме кілька разів, це варто автоматизувати

Під час роботи з Linux часто виникають повторювані завдання. Це може бути резервне копіювання папки, очищення тимчасових файлів або навіть клонування бази даних. Виконувати такі дії вручну щоразу незручно і займає час.

Саме для цього і використовуються Bash-скрипти. Вони дозволяють автоматизувати рутинні процеси і запускати їх за потреби однією командою.

У цьому матеріалі показано, як створити простий Bash-скрипт, як його запустити та на що варто звернути увагу на початку роботи з shell-скриптами.

Створення першого shell-скрипта

Спочатку створюється окрема директорія з назвою scripts, у якій будуть зберігатися всі Bash-скрипти.

mkdir scripts
 cd scripts

Тепер у цьому «каталозі скриптів» створіть новий файл з назвою hello.sh за допомогою команди cat:

cat > hello.sh

Вставте цей рядок, набравши його прямо в терміналі

echo 'Hello, World!'

Після цього натисніть Ctrl+D, щоб зберегти текст у файлі та вийти з команди cat.

Також можна скористатися текстовим редактором у терміналі, наприклад Vim, Emacs або Nano. Якщо використовується настільна версія Linux, підійде і графічний редактор, наприклад Gedit, щоб додати текст у файл.

По суті, тут використовується команда echo, яка виводить текст «Hello World». Її можна виконати безпосередньо в терміналі, але в цьому випадку вона запускається через shell-скрипт.

Далі потрібно зробити файл hello.sh виконуваним. Для цього використовується команда chmod таким чином:

chmod u+x hello.sh

І на завершення запустіть свій перший shell-скрипт, вказавши перед файлом hello.sh оболонку bash:

bash hello.sh

На екрані з’явиться повідомлення Hello, World!. Це, мабуть, один із найпростіших варіантів програми «Hello World», який тільки можна написати.

Нижче показано знімок екрана з усіма кроками, які були виконані раніше:

Перетворення shell-скрипта на Bash-скрипт

Якщо виникає плутанина, це нормально. Далі пояснюється, як усе працює.

Bash, або Bourne-Again shell, є лише одним із багатьох shell, доступних у Linux.

Shell – це інтерпретатор командного рядка, який приймає та виконує команди. Якщо хоча б раз запускалася будь-яка команда в Linux, shell уже використовувався. Під час відкриття термінала система одразу запускає стандартну оболонку.

У більшості дистрибутивів Linux Bash використовується як оболонка за замовчуванням. Саме тому слово Bash часто сприймається як синонім shell.

Синтаксис shell-скриптів у різних оболонках здебільшого схожий, але між ними є відмінності. Наприклад, у Zsh індексація масивів починається з 1, тоді як у Bash – з 0. Через це скрипт, написаний для Zsh, може працювати інакше або взагалі не працювати в Bash.

Щоб уникнути несподіваної поведінки, варто одразу вказувати, для якої оболонки написаний скрипт. Для цього використовується shebang.

Рядок shebang на початку shell-скрипта

Рядок #!/bin/bash називається shebang. У деяких джерелах його також називають hashbang, оскільки він починається зі знака решітки # та знака оклику !.

Цей рядок повідомляє системі, що скрипт потрібно виконувати саме за допомогою Bash.

#! /bin/bash

echo 'Hello, World!'

Коли рядок #!/bin/bash додається на самий початок скрипта, система розуміє, що для його виконання потрібно використовувати Bash як інтерпретатор. Після цього файл hello.sh можна запускати напряму, без додаткового зазначення bash перед назвою скрипта.

Додавання shell-скрипта до PATH, щоб його можна було запускати з будь-якої директорії

Можна помітити, що для запуску скрипта використовується ./hello.sh. Якщо прибрати ./ на початку, з’явиться помилка.

abhishek@handbook:~/scripts$ hello.sh
hello.sh: command not found

Bash сприймає це так, ніби запускається команда з назвою hello.sh. Коли в терміналі вводиться будь-яка команда, оболонка шукає її у списку директорій, які збережені в змінній PATH.

Щоб переглянути вміст змінної PATH, можна скористатися командою echo:

echo $PATH
/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Двокрапка : використовується для розділення шляхів до директорій, які оболонка перевіряє під час запуску будь-якої команди.

Команди Linux на кшталт echo, cat та інших можна запускати з будь-якого місця, оскільки їхні виконувані файли зберігаються в директоріях bin. Ці директорії вже додані до змінної PATH. Коли запускається команда, система переглядає всі шляхи з PATH, щоб знайти відповідний виконуваний файл.

Щоб Bash-скрипт можна було запускати з будь-якої директорії так само, як звичайну команду Linux, потрібно додати шлях до нього у змінну PATH.

Спочатку необхідно дізнатися шлях до директорії зі скриптом. Якщо робота ведеться в тій самій директорії, для цього використовується команда pwd:

pwd

Щоб додати директорію зі скриптами до змінної PATH, використовується команда export.

export PATH=$PATH:/home/user/scripts

Важливо звернути увагу, що директорія scripts додається в кінець змінної PATH. Завдяки цьому користувацький шлях перевіряється вже після стандартних системних директорій.

Тепер можна запустити hello.sh:

abhishek@handbook:~/scripts$ hello.sh
Hello, World!

Скрипт працює. На цьому навчальний матеріал завершується. Тепер  у вас є базове розуміння того, як працюють shell-скрипти.

Змінні у Bash-скриптах

Далі розглядається робота зі змінними в Bash і те, як використовувати їх у shell-скриптах під час повсякденної роботи.

З часом змінюється багато чого, і змінні не є винятком.

Ті, хто вже мав справу з програмуванням, напевно не раз працювали зі змінними. Для тих, хто стикається з ними вперше, змінну можна уявити як контейнер для збереження певної інформації, яка може змінюватися з часом.

Під час написання Bash-скриптів змінні використовуються постійно. Далі показано, як працювати зі змінними та застосовувати їх у shell-скриптах.

Використання змінних у Bash-скриптах

Ви вже знаєте, як створити простий Bash-скрипт із виведенням «Hello World».

#! /bin/bash

echo 'Hello, World!'

Це був найпростіший варіант скрипта «Hello World». Тепер його можна зробити кориснішим.

Для цього до скрипта додаються змінні, щоб він міг вітати користувача по імені. Потрібно відредагувати файл hello.sh і використати команду read, щоб отримати введення від користувача:

#! /bin/bash

echo "What's your name, stranger?"

read name

echo "Hello, $name"

Після запуску скрипт попросить ввести ім’я, а потім привітає з тим ім’ям, яке було введено.

abhishek@handbook:~/scripts$ ./hello.sh 
What's your name, stranger?
Elliot
Hello, Elliot

У цьому прикладі було введено ім’я Elliot, після чого скрипт вивів привітання «Hello, Elliot». Такий варіант виглядає значно кориснішим, ніж стандартне повідомлення «Hello, World».

Пояснення скрипта крок за кроком

Щоб було зрозуміло, як усе працює, скрипт варто розібрати по рядках.

На самому початку стоїть рядок shebang. Він потрібен для того, щоб система одразу знала, через яку оболонку запускати цей файл. У цьому випадку використовується Bash, тому скрипт і виконується саме в ньому.

#!/bin/bash

Далі скрипт виводить запит і чекає, поки користувач введе своє ім’я:

echo "What's your name, stranger?"

Це звичайна команда echo, яка просто виводить рядок у термінал. Тут усе досить очевидно.

А ось наступний рядок уже робить найцікавіше:

read name

У цьому рядку скрипт зупиняється і чекає введення від користувача. Команда read приймає ім’я та зберігає його у змінній name.

Після цього скрипт використовує збережене значення і виводить привітання з введеним ім’ям:

echo “Hello, $name”

Тут є один важливий момент. Щоб звернутися до значення змінної, перед її назвою потрібно ставити знак долара. Якщо цього не зробити, Bash просто виведе назву змінної, а не те, що в ній збережено.

Знак долара в Bash відповідає саме за підстановку значення змінної.

Змінні можуть зберігати різну інформацію. Це можуть бути числа, текст або навіть один символ. У більшості випадків різниця між ними майже не помітна, зате сам механізм роботи залишається однаковим.

Щоб створити змінну і задати їй значення, достатньо використати знак рівності. Наприклад, таким чином створюється змінна age зі значенням 27.

age=27

Після створення змінної age її значення можна змінювати скільки завгодно разів.

age=3

У цьому прикладі значення змінної age змінюється з 27 на 3. У Bash значення змінної можна змінювати в будь-який момент, просто присвоївши їй нове значення.

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

letter=’c’
color=’blue’
year=2020

У Bash також можна створювати змінні, значення яких не змінюється. Такі змінні використовуються тоді, коли потрібно зафіксувати певне значення і більше його не чіпати.

Для цього перед назвою змінної використовується команда readonly:

readonly PI=3.14159

Ця команда створює константну змінну PI зі значенням 3.14159. Після цього змінити її значення вже не вийде. Якщо спробувати зробити це, Bash повідомить про помилку.

bash: PI: readonly variable

Отже, значення константної змінної можна лише використовувати для читання. Після створення змінити його вже неможливо.

Підстановка команд

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

Класичний приклад для цього – команда date, яка повертає поточну дату і час:

TODAY=$(date)

У цьому прикладі результат виконання команди date зберігається у змінній TODAY. Для цього команда береться в круглі дужки і перед ними ставиться знак долара.

Також команду можна взяти у зворотні лапки:

TODAY=`date`

Використання зворотних лапок вважається застарілим підходом. У сучасних Bash-скриптах частіше застосовують варіант із круглими дужками та знаком долара.

variable=$(command)

Перш ніж завершити, можна трохи вдосконалити скрипт «Hello World». Наприкінці можна трохи змінити скрипт «Hello World», щоб він працював інакше.

Після знайомства з підстановкою команд скрипт більше не потребує введення імені вручну. Дані можна отримати безпосередньо під час виконання.

У цьому випадку використовується команда whoami, результат якої підставляється у вивід:

#! /bin/bash           

echo "Hello, $(whoami)"

Як видно, для цього знадобилися лише два рядки. Після запуску скрипт одразу працює так, як задумано:

./hello.sh

Усе працює без проблем.

За бажанням можна також звернути увагу на команду declare, яка дозволяє зручніше працювати зі змінними в Bash.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.