Структура bash-скрипта и синтаксис

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

#!/bin/bash

Если стандартный путь не работает определить местонахождение оболочки bash можно командой: echo $BASH.

ВНИМАНИЕ!

Создавая скрипт не забывайте делать файл скрипта исполняемым.

# — этот символ в начале строке говорит о том после него идет комментарий.

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

person=»Иванов»
x=2
y=3

Чтобы получить доступ к значению переменной необходимо использовать конструкцию
$<имя переменной>. Например:

echo $person
echo «Работник $person» # результат: Работник Иванов
echo ‘Работник $person’ # результат: Работник $person

Как показано выше при использовании двойных кавычек при выводе в консоль происходит вывод значения переменной, а при одинарных выводится информация как есть, и значения переменной не подставляются.
Чтобы произвести какие -нибудь операции над переменными нужно использовать скобки:

echo $(($x + $y))

Если просто написать $x+$y получим строку «$x+$y» поэтому и нужны двойные скобки. Внутренние формируют выражение в текстовом виде, а внешние вызывают вычисление этого выражения. Доступны все арифметические действия и действия со строками.

ПОЛУЧЕНИЕ ДАННЫХ С КЛАВИАТУРЫ И ЧЕРЕЗ ПАРАМЕТРЫ КОМАНДНОЙ СТРОКИ

Запрос данных с клавиатуры (ввод через консоль) используется функция read.

echo «Ваше имя? «
read name

Полученные данные сохранятся в переменной.

Параметры в скрипте обозначаются $1 $2 $3 и т. д. до $9. Если требуется больше 9 параметров то синтаксис меняется на такой $[10] $[11] и т. д.

ОПЕРАТОР IF

if [[condition ]] && [[ condition ]]; then
#statements
elif [[ condition ]] && [[ condition]]; then
#statements
elif [[ condition ]] && [[ condition ]]; then
#statements
else
#statements
fi

Операторы сравнения

Эквиваленты команды test

if test -z «$1»
then
echo «Аргументы командной строки отсутствуют.»
else
echo «Первый аргумент командной строки: $1.»
fi

if /usr/bin/test -z «$1» # Дает тот же результат, что и встроенная команда «test».
then
echo «Аргументы командной строки отсутствуют.»
else
echo «Первый аргумент командной строки: $1.»
fi

ОПЕРАТОР CASE

case variable in
value)
comands;;
value)
comands;;
value)
comands;;
*) # else
comands;;
esac

Массивы

Определение массива
name=(Иванов Петров Сидоров )
Внутри массива элементы могут иметь любой тип.

Вывод всех элементов массив
echo ${Array[@]}
Вывод индексов элементов массива
echo ${!Array[@]}

Вывод количество индексов в массиве, используем команду
echo ${#Array[@]}

ВАЖНО!
Если в значениях элементов массива есть пробелы, тогда эту команду нужно заключить в кавычки echo «${Array[@]}»

Перебор массивов в цикле

Элементы массива можно перебирать при помощи циклов. Например:

for i in ${Array[@]}; do

 echo «${Array[$i]}»

done

Так же можно перебирать индексы элементов массива

for i in ${!Array[@]}; do

  echo «${Array[$i]}»

done

ЦИКЛ FOR

Цикл for

for n in 1 2 3;
do
echo «$n»
done

Альтернативный вариант цикла for

for (( i = 0; i < 10; i++ )); do
echo «$i»
done

ЦИКЛ WHILE

while [condition true ]
do
command
command
done

ФУНКЦИИ

Определение функции

function myfunc {
echo «The first function definition»
}

Функция может принимать значения и возвращать значения.
Вызов функции.

myfunc

Функция с параметрами

function func2(){
echo $1
}

var1=»Hello»

func2 $var1

Может использоваться и рекурсия.

ФУНКЦИЯ ECHO

echo опции строка

Опций всего несколько, что можно использовать в работе утилиты:

-n — не выводить перевод строки;
-e — включить поддержку вывода Escape последовательностей;
-E — отключить интерпретацию Escape последовательностей.

Это все опции, если включена опция -e, то вы можете использовать такие Escape последовательности для вставки специальных символов:

/c — удалить перевод строки;
/t — горизонтальная табуляция;
/v — вертикальная табуляция;
/b — удалить предыдущий символ;
/n — перевод строки;
/r — символ возврата каретки в начало строки.

Вы можете разукрасить вывод echo с помощью последовательностей управления цветом Bash. Для доступны такие цвета текста:

\033[30m — чёрный;
\033[31m — красный;
\033[32m — зелёный;
\033[33m — желтый;
\033[34m — синий;
\033[35m — фиолетовый;
\033[36m — голубой;
\033[37m — серый.
И такие цвета фона:

\033[40m — чёрный;
\033[41m — красный;
\033[42m — зелёный;
\033[43m — желтый;
\033[44m — синий;
\033[45m — фиолетовый;
\033[46m — голубой;
\033[47m — серый;
\033[0m — сбросить все до значений по умолчанию.

Пример:

echo -e «\033[35mLinux \033[34mopen \033[32msource \033[33msoftware \033[31mtechnologies\033[0m»


Pinterest