Сегодня мы с вами поговорим о том, как писать более сложные конструкции на bash.

Об ограничениях для bash

Bash является Тьюринг-полным языком, поэтому любой алгоритм который вы можете придумать может быть на нем реализован. Но по своему опыту скажу, что программировать на bash лишний раз не хочется. И всякий раз когда после паузы вы будете возвращаться к нему, вам придется учить его заново.

<aside> 💡

Programming on bash, is opposite of riding a bicycle — no matter how many times you learned it you will fail.

</aside>

Так как понять когда стоит перестать писать на bash и перейти на что-то более конвенциональное? Как сказал первый лектор этого курса “если вам нужно написать, что-то сложнее сортировки, то стоит поменять язык”.

Основы синтаксиса bash

Переменные

Для того, что бы просто выставить значение в переменную используем оператор присваивания(=) не разделяя его пробелами

integer_var=1 # some integer variable
text_var=some_random_string_with_no_spaces # text variable **could** be assigned without bracets
text_var_2=You\\ can\\ separate\\ by\\ slashes
text_var_3="But try to always use bracets"

Для использования переменных в последующих выражениях разыменовывайте их с помощью $

integer_var_1=1
integer_var_2=$integer_var_1
echo $integer_var_2 # output is 1

Так же $ может быть использован, что бы присвоить результат выражения

integer_var_1=1
integer_var_2=2
integer_var_3=$((integer_var_1 + $integer_var_2))
echo $integer_var_3 # output is 3

Условные выражения

В bash есть условный оператор if

if [ <condition> ]; then
		# <if condition is true, do this>
elif [ <condition_2> ]; then
		# <if condition_2 is true, do this>
# numerous of elif ...
else
		# <if none of conditions is true, do this>
fi # you have to **always** finish your if statement with fi

Example

Для того, что бы сравнивать значения в условиях существуют следующие “операторы”. В виду различий между тем как сравниваются строки и целые числа в начале операторы сравнения целочисленых переменных