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