Ответ
В скриптах для автоматизации инфраструктуры выбор зависит от задачи:
Использую foreach (или цикл for), когда нужно выполнить операцию с каждым элементом коллекции (списка файлов, имен хостов, выходных данных команды).
- Пример на Bash (перебор файлов в директории):
# Применить chmod ко всем .sh файлам в директории for script in /opt/scripts/*.sh; do echo "Setting execute permissions for: $script" chmod +x "$script" done - Пример на Python (обработка списка IP-адресов):
# Проверить доступность хостов hosts = ['10.0.0.1', '10.0.0.2', '10.0.0.3'] for host in hosts: response = os.system(f"ping -c 1 {host} > /dev/null 2>&1") if response == 0: print(f"{host} is UP") else: print(f"{host} is DOWN")
Использую count (или len(), wc -l), когда нужно принять решение на основе количества элементов, а не их содержимого.
- Пример на Bash (проверка количества запущенных контейнеров):
# Если контейнеров больше 10, отправить алерт container_count=$(docker ps -q | wc -l) if [[ $container_count -gt 10 ]]; then echo "WARNING: High container count: $container_count" | mail -s "Alert" admin@example.com fi - Пример на Python (валидация входных аргументов скрипта):
import sys # Скрипт ожидает ровно 2 аргумента if len(sys.argv) != 3: print(f"Usage: {sys.argv[0]} <config_path> <environment>") sys.exit(1) config_path, env = sys.argv[1], sys.argv[2]
Ключевое правило: count (или его аналоги) для проверки размера, foreach — для итерации и действий над элементами.