Ответ
Мой уровень в Bash — продвинутый. Я регулярно пишу скрипты для автоматизации рутинных операций в инфраструктуре, CI/CD пайплайнах и для администрирования серверов.
Что я умею и применяю на практике:
- Написание надежных и безопасных скриптов с обязательным использованием
set -euo pipefailи обработкой сигналов черезtrap. - Сложная обработка текста с
awk,sedи регулярными выражениями в условиях[[ "$var" =~ regex ]]. - Работа с массивами и ассоциативными массивами для структурирования данных.
- Организация параллельного выполнения задач с использованием
&,waitи именованных каналов (fifo). - Парсинг и валидация аргументов командной строки, в том числе с помощью
getopts.
Пример скрипта для проверки доступности набора эндпоинтов:
#!/usr/bin/env bash
set -euo pipefail
endpoints=(
"https://api.service.com/health"
"https://auth.service.com/ready"
"tcp://db.service.com:5432"
)
declare -A results
for endpoint in "${endpoints[@]}"; do
if [[ "$endpoint" =~ ^https?:// ]]; then
if curl -f -s --max-time 5 "$endpoint" > /dev/null; then
results["$endpoint"]="OK"
else
results["$endpoint"]="FAIL"
fi
elif [[ "$endpoint" =~ ^tcp:// ]]; then
host_port="${endpoint#tcp://}"
if timeout 2 bash -c "cat < /dev/null > /dev/tcp/${host_port//://}" 2>/dev/null; then
results["$endpoint"]="OK"
else
results["$endpoint"]="FAIL"
fi
fi
done
for endpoint in "${!results[@]}"; do
printf "%-40s %sn" "$endpoint" "${results[$endpoint]}"
done
Я осознаю ограничения Bash для сложной логики и знаю, когда стоит переключиться на Python.