====== 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