🐚 Скобки и подстановки в Bash: что означает каждая запись
( команды ) - выполняет команды в отдельной оболочке. Изменение каталога не затронет основной скрипт:
( cd /var/log; ls )
{ команды; } - группирует команды в текущей оболочке. Пробел после { и ; перед } обязательны:
{ cd /var/log; ls; }
files=(one.txt two.txt) - создаёт массив. Получить все элементы: "${files[@]}".
$(( выражение )) - вычисляет арифметическое выражение:
result=$((5 * 3 + 1)) → 16
$( команда ) - подставляет вывод команды:
user=$(whoami)
[ условие ] - проверяет условие с помощью команды test:
[ -f /etc/passwd ] - файл существует и является обычным файлом.
[[ условие ]] - расширенная проверка Bash; поддерживает, например, сопоставление с шаблоном:
[[ $file == *.txt ]]
{1..4} - генерирует последовательность. backup_{1..4}.tar.gz разворачивается в четыре имени файлов.
${variable} - значение переменной с явно обозначенными границами:
"${name}_backup"
${filename%.txt}.bak - удаляет суффикс .txt из значения переменной и добавляет .bak. Саму переменную эта запись не меняет.
💾 Сохрани, чтобы не путать () с {}, а $(...) с $((...)).
👉 @i_odmin_book
( команды ) - выполняет команды в отдельной оболочке. Изменение каталога не затронет основной скрипт:
( cd /var/log; ls )
{ команды; } - группирует команды в текущей оболочке. Пробел после { и ; перед } обязательны:
{ cd /var/log; ls; }
files=(one.txt two.txt) - создаёт массив. Получить все элементы: "${files[@]}".
$(( выражение )) - вычисляет арифметическое выражение:
result=$((5 * 3 + 1)) → 16
$( команда ) - подставляет вывод команды:
user=$(whoami)
[ условие ] - проверяет условие с помощью команды test:
[ -f /etc/passwd ] - файл существует и является обычным файлом.
[[ условие ]] - расширенная проверка Bash; поддерживает, например, сопоставление с шаблоном:
[[ $file == *.txt ]]
{1..4} - генерирует последовательность. backup_{1..4}.tar.gz разворачивается в четыре имени файлов.
${variable} - значение переменной с явно обозначенными границами:
"${name}_backup"
${filename%.txt}.bak - удаляет суффикс .txt из значения переменной и добавляет .bak. Саму переменную эта запись не меняет.
💾 Сохрани, чтобы не путать () с {}, а $(...) с $((...)).
👉 @i_odmin_book