Оценок пока нет Основы языка bash

Язык bash — интерпретируемый язык для автоматизации сценариев выполнения команд в системе Linux.

Выполнение скриптов или shebang

Шебанг (англ. shebang, sha-bang, hashbang, pound-bang, or hash-pling) — в программировании последовательность из символов решётки и восклицательного знака (#!) в начале файла скрипта.

Когда скрипт с шебангом выполняется как программа в Unix-подобных операционных системах, загрузчик программ рассматривает остаток строки после шебанга как имя файла программы-интерпретатора. Загрузчик запускает эту программу и передаёт ей в качестве параметра имя файла скрипта с шебангом.

Например, если полное имя файла скрипта «path/to/script» и первая строка этого файла:

#!/bin/sh

то загрузчик запускает на выполнение /bin/sh (обычно это Bourne shell или совместимый интерпретатор командной строки) и передаёт path/to/script как первый параметр.

После первой строки, где находится шебанг идет код того языка, на который указывает путь к интерпретатору.

Очень важно, чтобы скрипт имел прав ана исполнение, иначе он может не выполниться в системе и для этого достаточно прописать:

$ chmod -x ./script.py

Список команд

КомандаОписание
echoвывод значения переменной
exportобъявление перменной
>запись с затиранием содержимого
>>добавление в конец
catвывод содержимого файла
readчтение и ожидание от пользователя

Ветвления

Будучи языком программирования в bash есть ветвления, которые необходимы для управления потоком выполения команд, в зависимости от значений переменных и выглядит это так:

if [TEST-COMMAND1]
then
  STATEMENTS1
elif [TEST-COMMAND2]
then
  STATEMENTS2
else
  STATEMENTS3
fi

Выражения ветвления начинается с команды if и далее пишется проверяемое значение переменной и после then пишется то, что будет выполнено в случае, если значение true, иначе продолжает выполнять следующие ветки, если они есть. Конец ветвления должен заканчиваться командой fi.

Ниже представлен список операторов для конструкции if:

  • -n VAR — True if the length of VAR is greater than zero.
  • -z VAR — True if the VAR is empty.
  • STRING1 = STRING2 — True if STRING1 and STRING2 are equal.
  • STRING1 != STRING2 — True if STRING1 and STRING2 are not equal.
  • INTEGER1 -eq INTEGER2 — True if INTEGER1 and INTEGER2 are equal.
  • INTEGER1 -gt INTEGER2 — True if INTEGER1 is greater than INTEGER2.
  • INTEGER1 -lt INTEGER2 — True if INTEGER1 is less than INTEGER2.
  • INTEGER1 -ge INTEGER2 — True if INTEGER1 is equal or greater than INTEGER2.
  • INTEGER1 -le INTEGER2 — True if INTEGER1 is equal or less than INTEGER2.
  • -h FILE — True if the FILE exists and is a symbolic link.
  • -r FILE — True if the FILE exists and is readable.
  • -w FILE — True if the FILE exists and is writable.
  • -x FILE — True if the FILE exists and is executable.
  • -d FILE — True if the FILE exists and is a directory.
  • -e FILE — True if the FILE exists and is a file, regardless of type (node, directory, socket, etc.).
  • -f FILE — True if the FILE exists and is a regular file (not a directory or device).

Пример кода:

#!/bin/sh

echo -n "Enter a number: "
read VAR

if [ $VAR -gt 10 ]
then
  echo "The variable is greater than 10."
elif [ $VAR -eq 10 ]
then
  echo "The variable is equal to 10."
else
  echo "The variable is less than 10."
fi

Пожалуйста, оцените материал

WebSofter

Web - технологии