Bash.Синтаксис
https://t.me/HotCheatSheet
Синтаксис bash не так сложен, на нём вполне можно писать различные команды, вычисления. Самое то для автоматизации рутины. Я думаю большая часть уже знакома с этой темой, но это только начало длинного пути, спасибо что остаётесь с нами =)
Команды возвращающие код возврата
test — используется для логического сравнения. после выражения, неоьбходима закрывающая скобка "]"
[ — синоним команды test
[[ — расширенная версия "[", внутри которой могут быть использованы ||(или), &(и). Должна иметь закрывающую скобку "]]"
(( )) — математическое сравнение.
Перенаправление ввода-вывода
0<filename или <filename — перенаправление ввода из файла «filename»
1>filename или >filename — перенаправление вывода в файл «filename», если отключена опция noclobber, то файл перезаписывается поступающими данными
1>|filename или >|filename — перенаправление вывода в файл «filename», файл перезаписывается поступающими данными
1>>filename или >>filename — перенаправление вывода в файл «filename», данные добавляются в конец файла, при отсутствии файл создаётся
2>filename — перенаправление стандартного вывода ошибок в файл «filename»
2>>filename — перенаправление стандартного вывода ошибок в файл «filename», данные добавляются в конец файла, при отсутствии файл создаётся
&>filename — перенаправление вывода и ошибок в файл «filename»
2>&1 — перенаправление вывода ошибок на стандартный вывод
Логические операции
-z <строка> — строка пуста
-n <строка> — строка не пуста
=, (==) <строка> — строки равны
!= <строка> — строки неравны
-eq — равно
-ne — неравно
-lt,(<) — меньше
-le,(<=) — меньше или равно
-gt,(>) — больше
-ge,(>=) — больше или равно
! — отрицание логического выражения
-a,(&&) — логическое «И»
-o,(||) — логическое «ИЛИ»
Математические операции
+ — сложение
- — вычитание
* — умножение
/ — деление
** — возведение в степень
% — модуль(деление по модулю), остаток от деления
Массивы
${<массив>[@]} — получить строку, состоящую из всех элементов массива, разделённых пробелом.
{!<массив>[@]} — получить строку со всеми индексами или ключами массива, независимо от того, численные они или текстовые.
{<массив>[@]/тскет/текст} — Осуществить массовую замену первого вхождения подстроки «тскет» на «текст» во всех элементах массива и вернуть строку, составленную из результирующих элементов массива, разделённых пробелом.
declare -a <массив> — объявить индексированный массив
Массив=(элемент1 элемент2 элемент3) — инициализировать индексированный массив.
${<имя_массива>[0]} — получить первый элемент массива.
declare -A <массив> — объявить ассоциативный массив.
Массив=([<ключ1>]=<значение1> [<ключ1>]=<значение1>[<ключ1>]=<значение1>) — инициализировать ассоциативный массив.
Целочисленная математика
VAR=55 — Устанавливаем переменную VAR, равной 55
((VAR = VAR + 1)) — Добавляем единицу к переменной VAR. Обратите внимание на отсутствие знака '$'
((VAR+=1)) — Сокращённая форма записи инкремента
((++VAR)) — Другой способ увеличения VAR на единицу. Выполняет префиксный инкремент
((VAR++)) — Другой способ увеличения VAR на единицу. Выполняет постфиксный инкремент
echo $((VAR * 22)) — Умножаем VAR на 22 и передаем результат команде
echo $[VAR * 22] — Устаревший способ сделать то же
((VAR<<3)) — Побитовый сдвиг влево (то же, что VAR*8)
((VAR>>3)) — Побитовый сдвиг вправо (то же, что VAR/8)
Условные операторы
if <выражение или команда возвращающая код возврата> then
<команды>
else
<команды>
fi
if <выражение или команда возвращающая код возврата> then
<команды>
elif <выражение или команда возвращающая код возврата> then
<команды>
fi
case $<переменная> in
<номер>)<команды>
;;
*)<команды> — выполняются если не было найдено подходящего варианта
;;
Циклы
for <переменная> in <список_значений> do
<команды>
done
while <выражение или команда возвращающая код возврата> do
<команды>
done
until <выражение или команда возвращающая код возврата> do
<команды>
done
Дополнительно
cat filename | grep pattern — конвейер(|), передаёт вывод предыдущей команды на ввод следующей
echo a{p,c,d,b}e — расширение скобок (данный вывод - ape ace ade abe)
#!/bin/bash — для запуска скрипта с интерпретатором bash