Примитивный - это не попытка обидеть вашу любимую игрушку, это констатация факта. Если в python вы положите команду в переменную, она не начнет выполнятся при выводе на экран.
$ A="echo B"
$ echo $A
echo B
Верно. И у bash нет нормальных тест-фреймворков.
Конечно, да. Но тут либо CI/CD решает 100% задач, либо приходится допиливать что-то. И, опять же, редко когда удается допилить требя строчками bash скрипта.
Ну вот помимо существующих CI/CD, с радостью попробую kotlin script.
В том, что этот метод нужно поддерживать в двух местах, вместо одного? Насобирать три-четыре таких места и никто не захочет это трогать.
И как это решает то, что люди (девопсы) за*бутся апгрейдить ее постоянно ручками? Да никак, проекты тупо забивают и скедьюлят "апгрейд архитектуры" раз в миллион лет - ну потому что не будут же они обновлятся раз в месяц. А фиксы, нужные фиксы базы, релизятся раз в месяц, если не чаще.
Если вам в жизни удастся поуправлять самолетом, вы не станете пилотом.
А вы пишите, что вполне нормально копировать все страницы памяти, для простейших операций.
Но писать про это предлагая взамен полное копирование всех страниц памяти интерпретатора (fork) даже при элементарных операциях - это показывать полное непонимание на чем можно экономить
Но, работая с Си, вы должны были заметить отличия в разделении кода и данных, кастомных типах позволяющих создавать сложные типы данных и огромное кол-во функционала который позволяет назвать Си универсальным языком программироавния в отличии bash специализирующего на запуске команд.
Но давайте поговорим не о копировании файла, а, например, о билде и деплое проекта.
Я про автоматические тесты.
Из банального:
- погрупировать таски
- записывать время выполнения каждой мелкой таски
- проверять что она не завалилась
- репортить все это в какой-нить слэк в конце
- делать ролбек в случае неудачи
- подчищать за собой остатки
Все это делается очень легко с помощью нормального языка. С bash это адская боль.
Ну, например в проекте есть код, вытаскивающий актуальную версию чего-то там с помощью какого-нить github SDK. Потом эта версия понадобилась в каком-то скрипте. Если проект и скрипты на одном языке - это элементарно шерится. Если на разных - проще вообще не шерить.
Ну да. Как часто вы обновляте базы на продакшене? Девелоперы хотят делать это условно раз в месяц, но без контейнеров заниматся этим будут в лучшем случае раз в два-три года.
Да нет, не использую. Над таким "облачным решением" обычно ноль контроля - оно падает когда захочет, обновляется только руками в дешборде, отстает по версиям от self-hosted.
Затем что обновлять его нужно одновременно у девов, QA, на тестовых, на стейдже, на продакшене. На каждом хосте ручками ставить нужную версию? А она же еще совпадать должна!
Я к тому и веду, что, имхо!!, это временно.
Только, опять же, джава легко тестируется, более удобна, легко шерит код между проектом и "скриптами" автоматизации, не использует никакие костыли.
Это "используем современные подходящие технологии, без велосипедов и заебов". Да, намного проще запустить контейнер с клиентом мускула, что бы создать базу и намного проще обновить контейнер с httpd, чем пытатся сделать это руками/косячной автоматизацией на баш.
ООП бесполезная трата ресурсов, ведь все можно сделать через if и for
Но, действительно, спорить бесполезно с человеком, кто не писал ничего сложнее скриптов автоматизации
Понимаю, что для сисадмина все разработчики занимаются фигнёй, ведь все можно просто и легко сделать в bash.
Не проще ли зафорсить версии ВСЕГО софта,
Какой смысл от миллиарда устройств с bash, если на одном из них не будет wget?)
Там есть немного про shell. Если коротко: shell - весьма жуткая вещь с кучей проблем и костылей.
При этом bash и sh несовместимы.
Назвать bash языком программирования у меня бы язык не повернулся,
с точки зрения любого языка программирования синтаксис bash ужасен.
Но нужно понимать что это командный процессор, а не язык, что многое объясняет.
Ты можешь вообще подумать логически и нормально сформулировать задачу, а не говорить вещи, которые противоречат самим себе?