TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #316 1.18K
Bash-модули: подключение и структура библиотек функций

Когда проект разрастается, скрипты превращаются в мешанину повторяющегося кода. Решение - выносить логику в отдельные .sh-файлы и подключать их как модули. Bash позволяет это делать просто и удобно с помощью source.

▪️ Пример структуры проекта:


project/
├── main.sh
├── lib/
│ ├── colors.sh
│ ├── network.sh
│ └── disk.sh


▪️ Как подключать:


#!/bin/bash
# main.sh

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/lib/colors.sh"
source "$SCRIPT_DIR/lib/network.sh"
source "$SCRIPT_DIR/lib/disk.sh"

log_info "Начинаем выполнение..."
check_network
check_disk_usage


▪️ Файл colors.sh:


#!/bin/bash

RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'

log_info() {
echo -e "${GREEN}[INFO]${NC} $*"
}

log_error() {
echo -e "${RED}[ERROR]${NC} $*"
}


▪️ Файл network.sh:


#!/bin/bash

check_network() {
if ! ping -c1 8.8.8.8 &>/dev/null; then
log_error "Нет подключения к интернету"
else
log_info "Сеть доступна"
fi
}


▪️ Файл disk.sh:


#!/bin/bash

check_disk_usage() {
local usage
usage=$(df / | awk 'NR==2 {print $5}')
log_info "Использование диска: $usage"
}


⭐️ Рекомендации:

📍 Используй SCRIPT_DIR для относительных путей (надежно даже из cron);
📍 Разделяй модули по темам (log.sh, fs.sh, sys.sh и т.д.);
📍 Добавляй set -euo pipefail в main.sh, но не обязательно в модулях - иначе они могут прерывать подключение.


BashTex 📱 #bash
  • 👍 7
  • 🔥 1
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
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 →