Вышла я на работу, так что пора стряхнуть пыль с рубрики «истории с работы» 👀
Стоит у меня задача — скачать и запустить N справочников на стенде, около 10 штук. Команда выглядит так:
env/bin/test download dir_1
env/bin/test download dir_2
env/bin/test download dir_3
...
env/bin/test start dir_1
env/bin/test start dir_2
Это в упрощенном виде. А если у меня есть какие-то особенности запуска (смещение порта, например), команда получается длиннее:
. tester.env && . custom.env && env/bin/test download dir_1
Команды можно вызвать пачкой, они не конфликтуют друг с другом. Ну и прекрасно! Можно, конечно, уныло вставлять команду в командую строку и ждать выполнения, но зачем?
Написала sh-скриптик (выполняю на линукс-машине команды). Можно или писать «. tester.env && . custom.env» в каждой команде, или указать их один раз в начале скрипта. Получилось примерно так:
#!/bin/bash
. tester.env
. custom.env
# Скачать справочники
env/bin/test download dir_1
env/bin/test download dir_2
# Запустить справочники
env/bin/test start dir_1
env/bin/test start dir_2
Попробовала запустить — работает! Но выводит результаты в консоль, что очень неудобно. Листаешь потом консоль и пытаешься понять:
- есть тут ошибки или нет
- на каком ты этапе
#!/bin/bash
. tester.env
. custom.env
# Скачать справочники
env/bin/test download dir_1 >> update_log.txt
env/bin/test download dir_2 >> update_log.txt
# Запустить справочники
env/bin/test start dir_1 >> update_log.txt
env/bin/test start dir_2 >> update_log.txt
#!/bin/bash
. tester.env
. custom.env
# Скачать справочники
echo "**************************************************" >> update_log.txt
echo "($(date '+%Y-%m-%d')) Скачиваем справочники" >> update_log.txt
echo "**************************************************" >> update_log.txt
echo "env/bin/test download dir_1"
env/bin/test download dir_1 >> update_log.txt
echo "----" >> update_log.txt
echo "env/bin/test download dir_2"
env/bin/test download dir_2 >> update_log.txt
# Запустить справочники
echo "**************************************************" >> update_log.txt
echo "($(date '+%Y-%m-%d')) Запускаем справочники" >> update_log.txt
echo "**************************************************" >> update_log.txt
echo "env/bin/test start dir_1"
env/bin/test start dir_1
echo "----" >> update_log.txt
echo "env/bin/test start dir_2"
env/bin/test start dir_2
Да, сам скрипт стал выглядеть довольно страшненько, в первой версии прям идельно смотрелся, ряд коротких красивых команд. Зато так удобно запустить и уйти на обед / домой вечером. А потом в логе спокойно прочитать, как отработала та или иная команда 👀
И да, скрипт написан на коленке и мог бы быть намного красивее. Но это лучше, чем ничего. И «Done is better then perfect» © =)
Комментариев нет:
Отправить комментарий