TGViewer
LinuxSkill - Сводки с прода и Шпаргалки LinuxSkill - Сводки с прода и Шпаргалки @linuxskill · 10.7K subscribers
Post #1164 3.2K
🧨 Твои скрипты падают на проде? 43 команды Bash, которые спасут твою репутацию

Скрипт отработал с ошибкой, но не остановился и удалил половину нужных файлов? Или CI/CD пайплайн споткнулся о пустую переменную? Я отжал воду из огромных справочников и оставил ровно 50 самых хардкорных и важных конструкций Bash, которые жизненно необходимы.

1. Безопасность и запуск (Strict Mode)
Эти настройки — стандарт де-факто для любых production-скриптов. Они отлавливают ошибки на раннем этапе.

# Указать интерпретатор (лучшая практика переносимости)
#!/usr/bin/env bash

# Сделать скрипт исполняемым
chmod +x script.sh

# "Strict Mode" (выход при ошибке, ошибке переменной или в пайплайне)
set -euo pipefail

# Выйти немедленно при ошибке
set -e

# Режим отладки (выводить команды перед выполнением)
set -x



2. Продвинутая работа с переменными
Защита от пустых значений, которые могут сломать автоматизацию.

# Присвоить значение (строго без пробелов вокруг =)
VAR=value

# Безопасное чтение с кавычками (предотвращает word splitting)
"$VAR"

# Использовать по умолчанию, если переменная не задана (важно для Docker)
${VAR:-default}

# Назначить значение по умолчанию, если VAR не задана
${VAR:=default}

# Выйти с ошибкой, если переменная не задана (failsafe для деплоя)
${VAR:?error msg}

# Сделать переменную доступной только для чтения (константа)
readonly VAR

# Экспортировать переменную для дочерних процессов
export VAR



3. Системные переменные
Идентификаторы процессов и аргументы функций.

# Имя скрипта
$0

# Позиционные параметры (аргументы 1-9)
$1..$9

# Количество переданных аргументов
$#

# Все аргументы безопасно как отдельные слова
$@

# Статус выхода последней команды (0 - успех, иное - ошибка)
$?

# PID текущего процесса shell
$$



4. Парсинг строк (без вызова awk/sed)
Молниеносные встроенные манипуляции с путями и текстом.

# Удалить самое короткое совпадение паттерна с начала
${VAR#pattern}

# Удалить самое короткое совпадение с конца (удобно для расширений файлов)
${VAR%pattern}

# Заменить все вхождения подстроки
${VAR//old/new}

# Перевести все символы в нижний регистр
${VAR,,}



5. Условия и мощные проверки
Используй `[[ ]]` вместо старого `[ ]` — это безопаснее и поддерживает регулярные выражения.

# Проверить существование файла и вывести результат
if [[ -f "file.txt" ]]; then echo "exists"; fi

# Проверка по регулярному выражению
=~

# Конструкция case (идеально для стартовых скриптов systemd)
case "$1" in start) echo "Starting";; stop) echo "Stopping";; *) echo "Usage: $0 {start|stop}";; esac

# Файл существует и является обычным
-f file

# Файл существует и является директорией
-d file

# Строка пустая
-z string

# Строка не пустая
-n string

# Строковое равенство и неравенство
==
!=

# Числовое равенство и неравенство
-eq
-ne



6. Массивы и словари
Незаменимо для перебора IP-адресов, списков серверов и портов.

# Объявить индексированный массив
arr=(a b c)

# Получить все элементы массива
${arr[@]}

# Узнать количество элементов в массиве
${#arr[@]}

# Объявить ассоциативный массив (словарь)
declare -A map

# Добавить значение по ключу
map[key]="value"



7. Математика, Ввод/Вывод и Сигналы
Форматирование вывода для дашбордов и правильная очистка мусора за скриптом.

# Арифметика: сложение
$((a + b))

# Арифметическое присваивание
let "a += 5"

# Прочитать строку в массив
read -r -a items <<< "a b c"

# Форматированный вывод (надежнее чем echo)
printf "Name: %s, Age: %d\n" "$name" "$age"

# Многострочный ввод (Here document) для генерации конфигов
cat <<EOF
Lines of text go here.
Variables like $HOME are expanded.
$ EOF

# Завершить скрипт с кодом успеха
exit 0

# Завершить скрипт с кодом ошибки
exit 1

# Выполнить очистку (например, удалить лок-файл) при любом выходе
trap ' rm -f /tmp/mylock' EXIT


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


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Bash #DevOps #Sysadmin #ShellScripting #CLI
  • 👍 13
More from @linuxskill
  1. Oct 7, 2026Post #1243
  2. Oct 6, 2026GitOps-практики: развёртываем сервис через ArgoCD Классический CI/CD запускает деплой. Но…
  3. Oct 5, 2026Post #1241
  4. Oct 2, 2026📊 Диск тормозит, а iostat показывает норму? Ищем хвост задержек Приложение подвисает на з…
  5. Sep 30, 2026💀 CPU под 100%, а в top пусто? Ловим невидимые процессы через eBPF Сервер греется, в шапк…
  6. Sep 28, 2026🔥 Знаешь только ip a? 10 неочевидных команд ip для Linux Большинство админов знают про ip…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →