====== Bash ====== Скриптована мова програмування Створення файла з виконанням для оболонки ''BASH'': touch bashscript.sh Зробити файл **виконуваним**: chmod +x bashcrispt.sh Вказати що за **тип** всередені файла: #!/bin/bash ===== Змінні ===== Існує 2 типи змінних: * Змінні середовища * Користувацькі змінні ==== Змінні середовища ==== Директорія користувача ''echo "Home for the current user is: **$HOME**"'' Якщо потрібно вивести знак доллара, використаєм екранований символ: ''echo "I have **\$1** in my pocket"'' ==== Змінні користувача ==== grade=5 person="Adam" echo "$person is a good boy, he is in grade $grade" ==== Підстановка команд ==== Одна з найкорисніших можливостей bash-скриптів - це можливість витягувати інформацію з виведення команд і призначати її змінним, що дає змогу використовувати цю інформацію де завгодно у файлі сценарію. Зробити це можна двома способами. * За допомогою значка зворотного апострофа "**`**" * За допомогою конструкції **$()** \\ Використовуючи перший підхід, простежте за тим, щоб замість зворотного апострофа не ввести одиночну лапку. Команду потрібно укласти в два таких значки: ''mydir=`pwd`'' ''mydir=$(pwd)'' ===== Математичні операції ===== Для виконання математичних операцій у файлі скрипта можна використовувати конструкцію виду : $((a+b)) #!/bin/bash var1=$((( 5 + 5 )) echo $var1 var2=$(( $var1 * 2 )) echo $var2 ===== Умови If - Then ===== #!/bin/bash if pwd then echo "It works" else echo "It not works" fi ===== Порівняння ===== ==== Порівняння чисел ==== ''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**. === Приклад === #!/bin/bash val1=6 if [ $val1 -gt 5 ] then echo "The test value $val1 is greater than 5" else echo "The test value $val1 is not greater than 5" fi ==== Порівняння рядків ==== ''str1 **=** str2 '' Перевіряє рядки на рівність, повертає істину, якщо рядки ідентичні. \\ ''str1 **!=** str2'' Повертає істину, якщо рядки не ідентичні. \\ ''str1 **<** str2 '' Повертає істину, якщо str1менше, ніж str2. \\ ''str1 **>** str2'' Повертає істину, якщо str1більше, ніж str2. \\ ''**-n** str1'' Повертає істину, якщо довжина str1 більша за нуль. \\ ''**-z** str1'' Повертає істину, якщо довжина str1 дорівнює нулю. === Приклад === #!/bin/bash user ="likegeeks" if [$user = $USER] then echo "The user $user is the current logged in user" fi #!/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 **Знаки < > потрібно екранувати!** ===== Перевірка файлів ===== ''-d file'' - Перевіряє, чи існує файл, і чи є він директорією. \\ ''-e file'' - Перевіряє, чи існує файл. \\ ''-f file'' - Перевіряє, чи існує файл, і чи є він файлом. \\ ''-r file'' - Перевіряє, чи існує файл, і чи доступний він для читання. \\ ''-s file'' - Перевіряє, чи існує файл, і чи не є він порожнім. \\ ''-w file'' - Перевіряє, чи існує файл, і чи доступний він для запису. \\ ''-x file'' - Перевіряє, чи існує файл, і чи є він виконуваним. \\ ''file1 -nt file2'' - Перевіряє, чи файл1 новіший, ніж file2. \\ ''file1 -ot file2'' - Перевіряє, чи файл1 старший за file2. \\ ''-O file'' - Перевіряє, чи існує файл, і чи є його власником поточний користувач. \\ ''-G file'' - Перевіряє, чи існує файл, і чи відповідає його ідентифікатор групи ідентифікатору групи поточного користувача. ==== Приклад ==== #!/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 ===== read. Ввод даних ===== read -p "Print username: " user ===== Cron ===== Постановка виконання скрипта на регулярній основі за допомогою cron-задач. Відкриваєм ''crontab'' для редагування під тим користувачем, з якого буде виконуватись скрипт: crontab -e Приклад налаштування (виконання кожну хвилину): * * * * * /home/osvex/scripts/script.sh