Если ты до сих пор используешь только переменные в Bash, пора прокачаться - массивы и ассоциативные массивы дают прокачку в области автоматизации.
▪️ Обычные массивы. Когда нужен список значений, например, список баз данных:
databases=("db1" "db2" "db3")
for db in "${databases[@]}"; do
echo "Делаю бэкап $db..."
pg_dump "$db" > "$db.sql"
done
▪️ Ассоциативные массивы. Когда нужно сопоставить
ключ → значение, например: сервис и его порт.
declare -A services
services=(
[nginx]=80
[ssh]=22
[postgres]=5432
)
for service in "${!services[@]}"; do
port=${services[$service]}
echo "$service работает на порту $port"
done
▪️ Реальное применение
📍 Мониторинг процессов:
declare -A procs=( [nginx]="nginx" [db]="postgres" [ssh]="sshd" )
for name in "${!procs[@]}"; do
pgrep -x "${procs[$name]}" > /dev/null || echo "$name не работает!"
done
📍 Распределённая отправка по email:
emails=(user1@example.com user2@example.com user3@example.com)
for email in "${emails[@]}"; do
echo "Привет!" | mail -s "Уведомление" "$email"
done
BashTex 📱 #linux #utils