prog:bash:main

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
#!/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 -p "Print username: " user

Постановка виконання скрипта на регулярній основі за допомогою cron-задач.

Відкриваєм crontab для редагування під тим користувачем, з якого буде виконуватись скрипт:

crontab -e

Приклад налаштування (виконання кожну хвилину):

* * * * * /home/osvex/scripts/script.sh
  • prog/bash/main.txt
  • Востаннє змінено: 18/06/2024 07:38
  • (зовнішнє редагування)