URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 129363
[ Назад ]

Исходное сообщение
"Доступен ShellCheck 0.9, статический анализатор для shell-скриптов"

Отправлено opennews , 27-Дек-22 12:01 
Опубликован выпуск проекта  ShellCheck 0.9, развивающего систему статического анализа shell-скриптов, поддерживающую выявление ошибок в скриптах с учётом особенностей bash, sh, ksh и dash. Код проекта написан на языке Haskell и распространяется под лицензией GPLv3. Предоставляются компоненты для интеграции с Vim, Emacs, VSCode, Sublime, Atom и различными интегрированными средами, поддерживающими GCC-совместимый вывод сведений об ошибках...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=58394


Содержание

Сообщения в этом обсуждении
"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:01 
must have для всех местных экспертов

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Жироватт , 27-Дек-22 12:41 
Да в принципе для всех нужная, но не необходимая.
Ошибается даже самый маститый гуру консоли, особенно с недосыпу или в цейтноте.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 16:44 
Новые мозги анализатор не поставит.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено анонна , 27-Дек-22 21:05 
но он позволит создавать скрипты не подверженные опасным ошибкам. я вообще удивляюсь как никому в голову не пришло создать такой инструмент раньше. это же по сути анализ текста и сверка его с правильным шаблоном(хотя и несколько сложнее). кстати в си и с++ такой анализатор был бы просто спасением в свое время. хотя если с си это можно сделать, то с плюсами куда сложнее. там столько напихали в язык  и продолжают пихать, что это окажется той еще задачкой.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 09:23 
>я вообще удивляюсь как никому в голову не пришло создать такой инструмент раньше

Раньше -- это когда? Shellcheck сто лет в обед.

>то с плюсами куда сложнее.

Сложнее, и тем не менее, cppcheck, clang-check, и ещё какие-то есть.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено анонна , 28-Дек-22 20:53 
способны ли они в с++ разобраться вот вопрос. там слишком много подводных камней))

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 13:14 
У так называемых программистов, не знающих что такое шина адреса и шлепающих формы на скриптухах для верстальщиков типа java, их нет и не может быть.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:08 
>Код проекта написан на языке Haskell

Но практически бесполезно. Ни GNU Haskell, ни gcc-haskell не наблюдается.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Ноня , 27-Дек-22 14:56 
Зато есть GNU/MIT Scheme.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:09 
Титаническая программа! От всей этой шелл-лапши никуда не деться, поэтому такой анализатор должен быть очень полезен.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено анон , 27-Дек-22 13:29 
Всегда считал, что вместо systemd надо было вложиться в такой анализатор или генератор скелета скриптов.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:43 
и как ты на башпортянках реализуешь асинхронщину и параллельный взаимозависимый запуск служб? да ты споткнешься уже на простейшей задаче "дождаться, когда ядро обнаружит /dev/sda" (нет, делать по таймеру проверку на существование /dev/sda -- это не верное решение)

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Random , 27-Дек-22 14:37 
Никогда до systemd не встречал ситуации, что система не может стартовать, хотя бы и в неполном виде, из-за того, что не может чего-то дождаться.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 14:59 
Даже кернел так то умеет параметр rootwait. Догадаешься почему? А так то ты видимо еще много чего не встречал.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Сушилин , 27-Дек-22 15:45 
Объясните пж не шарящиму, что это за зверь?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Роман , 27-Дек-22 16:05 
Например ваш raid массив на 48 дисков инициализируется не мгновенно и root device таким образом недоступен если не подождать

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено 1 , 27-Дек-22 16:28 
А потом "что-то пошло не так" и система не загружается никогда.
И Ctrl+C не нажать как в BSD и попробовать починить систему в /bin/sh

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Роман , 27-Дек-22 16:57 
> А потом "что-то пошло не так" и система не загружается никогда.
> И Ctrl+C не нажать как в BSD и попробовать починить систему в
> /bin/sh

Нажимать ctrl+c на bsd системах пожалуйста, кто ж запрещает


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 18:56 
> А потом "что-то пошло не так" и система не загружается никогда.

Вообще-то один из пойнтов RAID это сделать "что-то пошло не так" более редким явлением.

> И Ctrl+C не нажать как в BSD и попробовать починить систему в /bin/sh

Что и как ты будешь чинить, если рутфс нету, чудак?

А если очень надо то init=/bin/bash в бутлоадере - и чини себе. Но нормальные люди такое извращение если и практикуют то в сильно специальных случаях. Если тебе приходится этим заниматься, 99% что ты занимаешься фигней, и 1% - что у тебя ну вот реально нестандартная системная задача.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено YetAnotherOnanym , 27-Дек-22 19:38 
> Что и как ты будешь чинить, если рутфс нету, чудак?

Какой-то рут есть же, не? Инитрамфс для чего придумали?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 19:58 
> Какой-то рут есть же, не?

Ну да, путем телепортации появляется.

> Инитрамфс для чего придумали?

Он опционален. Может быть, может не быть. Его нужность определяется тем вкомпилены ли нужные драйверы фс и блочных устройств в основную тушку или нет. Если они там есть - зачем инитрамфс тогда? Сразу основное зацепит. Если нету - тогда упс, придется вот так. Со всеми радостями генерации этого и временем на распаковку при старте.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Random , 28-Дек-22 01:00 
Иногда надо загрузиться на деградированном рейде - например, без одного диска в зеркале.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 19:02 
> Объясните пж не шарящиму, что это за зверь?

Ждет появления девайса(-ов) с рутфс чтобы смонтировать оный. В зависимости от конфигурации устройство на котором рутфс размещена может появиться и заметно после момента когда кернел уже был технически готов init пытаться запускать "сам по себе". Если кернел попытается инит запустить и не найдет его - он довольно крепко на это дело обижается. А вот так - пожалуйста, потуповэйтит появления нужного устройства вместо того чтобы сразу обижаться на отсутствие инита.

Мало ли, разным железкам разное время на инициализацию надо. А старт с initrd это не единственный возможный вариант. Можно и без initrd стартовать.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено анон , 27-Дек-22 15:00 
> реализуешь асинхронщину и параллельный взаимозависимый запуск служб

А оно надо? Там выйгрыш ничтожно мал, если раскрутка только дисков занимает минут 5 на сервере, что мне с миллисекунд победы?
Даже на домашнем пк можно сделать systemd-analyze blame и обалдеть, как все плюсы системды разбиваются об ожидание mount или dhcp.
А еще мое любимое при выключении,  Waiting for process: "Дохлый недоеденный енот" .. 1s / 10min


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 16:38 
> да ты споткнешься уже на простейшей задаче "дождаться, когда ядро обнаружит /dev/sda"

Ты в курсе, что pid=0 запускается, когда ядро уже загружено и все проинициализировало. Типичный фанат поттеринга.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 17:24 
> pid=0 запускается

Ты в курсе, что процесса с pid=0 не существует? Типичный критикан системд.

> ядро уже загружено и все проинициализировало

И кто же это все проинициализировал? Да ядро даже /dev тебе не подключит, пока явно не попросишь или не выставишь соответствующий конфиг перед компиляцией. (Спойлер: дистрибутивные ядра его не выставляют.) В общем критикан системд дважды грубо ошибся в одном предложении. "Это уметь надо!"


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 19:05 
> Ты в курсе, что процесса с pid=0 не существует? Типичный критикан системд.

Вроде в его роли ядерный тред выступает. Который потом 1 создает и инит.

>> ядро уже загружено и все проинициализировало
> И кто же это все проинициализировал?

Он видимо из позапрошлого века пишет и продолбал момент когда ядро так то стало довольно асинхронным кроме всего прочего, в том числе и по инициализации железа.

> В общем критикан системд дважды грубо ошибся в одном предложении. "Это уметь надо!"

Малацца, анон. Я вон тут поху мастеркласс насчет самбы дал, точнее ksmd. Букмарки иногда апдейтить надо, фигли.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено freehck , 02-Янв-23 16:45 
> и как ты на башпортянках реализуешь асинхронщину и параллельный взаимозависимый запуск служб?

Ну так пойди и посмотри, как оно в Debian было сделано. И стартовало, между прочим, быстрее, чем стало после внедрения systemd.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 14:58 
> генератор скелетов в шкафу

Извините, не удержался.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 01:18 
> Всегда считал, что вместо systemd надо было вложиться в такой анализатор или
> генератор скелета скриптов.

А я вот не считаю, что шелл-лапша -- это лучшее решение для процесса загрузки. Но и жирный, переусложнённый systemd (который к тому же всё хочет замкнуть на себя, эдакий вендорлок) -- тоже плохое решение. В идеали видится что-то простое и быстрое, которое решает только одну нужную задачу. В целом, такие проекты есть, но не снискали особой популярности.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено ip1982 , 27-Дек-22 12:10 
Хорошо.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Анонус , 27-Дек-22 12:12 
>отсутствие пробелов при сравнении "[[ $foo==0 ]]", наличие пробелов "var = 42"

Хороший язык, продуманный. Консистентный, я бы сказал.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:24 
у раста по части памяти всё хорошо в сравнении с дедовыми плюсами, ведь она у него не течёт как у ски в месячные

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:29 
Уровень лексикона растоманов понятен

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 27-Дек-22 12:38 
Большинство местных растоманов  в пуберантном периоде

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 27-Дек-22 14:02 
Как и всех остальных -манов на этом ресурсе, что очевидно из всей демагогии в комментариях под любой новостью о Rust, да и не только. Настоящих спецов здесь крайне мало, будь то растоманов, сишников, приплюснутых, скорлупщиков и т.д. Рассадник самоуверенной школоты, короче. Сам не знаю, зачем читаю комментарии и отвечаю на них, но от детерминизма не убежишь.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 14:58 
>Сам не знаю, зачем читаю комментарии и отвечаю на них

Потому что ты сам считаешь, что удобненький язычок с удобненьким пакетным менеджером научит тебя кодить.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 27-Дек-22 15:41 
Я считаю, что кодить меня научит только практика, чем я и занимаюсь. Я больше не разрабатываю софт профессионально после выгорания и долгих лет борьбы с депрессией, но дело идёт на поправку, последние несколько месяцев я слежу за своим питанием (кето, витамины и т.д.) пью Страттеру (для СДВГ) и это приносит плоды - появилась куча энергии, исчезла вечная усталость, и теперь я после работы сантехником и в выходные уже недель шесть допиливаю свою библиотеку risky (https://github.com/burjui/risky/tree/v0.4.0) для кодирования инструкций RISC-V (пока только RV32I + M + Zicsr): написал документацию, под две сотни тестов, улучшил API. Потом буду добавлять другие расширения, займусь своим игрушечным компилятором (https://github.com/burjui/rambo), который тоже нуждается в переработке: сделаю внятное выделение регистров, переделаю герерацию RISC-V инструкций (сейчас там примитивный говнокод), добавлю новые оптимизации (сейчас только constant folding + propagation и инлайнинг функций), языковые конструкции. Потом буду изучать теорию типов, чтобы вообще понимать, что я делаю. Я всегда изучал новые ЯП для расширения кругозора и тренировки мозга (вот недавно пощупал koka (очевидная шутка для местных петросянов)), и продолжу это делать, пока он у меня есть.

Короче, я хоть что-то делаю, пусть и на ненавидимом здесь Rust и как хобби, а местные ыксперты пусть и дальше верят в сказки об идеальном коде идеальных программистов, и поучают меня при помощи демагогии. Время покажет, кто из нас тратит время впустую, а кто развивается.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 22:29 
>стена текста

Гораздо выразительней этой стены текста с саморекламой говорят сами за себя выпады в сторону сишных указателей и такого неудобного шелла, которого удобнее питончик, политый удобненьким VSCode. От обоих выпадов прямо-таки навевает словами "детская травма".


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 27-Дек-22 23:39 
Да мало ли, что они тебе говорят. Сейчас бы прислушиваться к мнению какого хрена с опеннета, у которого нет даже ника, не то что кода, знаний и опыта. Разве что опыта демагогии 😁

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Анончик , 28-Дек-22 09:17 
Зачем вы себя мучаете этим программированием, непонятно. Есть куча других профессий и занятий по мимо ИТ.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 09:46 
Зачем вы себя мучаете чтением моих комментариев, непонятно. Есть куча другого текста "по мимо" написанного мной.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 03:31 
>и теперь я после работы сантехником и в выходные
> уже недель шесть допиливаю свою библиотеку risky (https://github.com/burjui/risky/tree/v0.4.0)
> для кодирования инструкций RISC-V (пока только RV32I + M + Zicsr):

Очень жирно



"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 10:06 
Жирно или нет, но:
1. Мне есть, что показать, чего не скажешь о местной школоте.
2. В risky покрытие кода тестами 99.55%, она быстрая и корректно работает на big-endian, в ней нет кривой работы с памятью и последняя не течёт.
3. Нормального человека мой пример может мотивировать на написание кода, и мне неважно, будет это код на Rust, С, Python или BASIC - лишь бы человек писал код и учился. А такие, как вы - одна из причин, почему люди теряют веру в человечество.

Я человек не злой по натуре, и вам бы искренне пожелал хорошего дня, но, сдаётся мне, для вас хороший день - это плюнуть кому-нибудь в душу, поэтому не буду.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 13:02 
С каких пор джаваскритпизеры стали сантехниками?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 13:54 
Ещё один выполз... Я никогда не писал ни на JS, ни на PHP, а в Битриксе делал приложения для Android на Java и Kotlin (который там внедрял я).

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 16:39 
> Ещё один выполз... Я никогда не писал ни на JS, ни на
> PHP, а в Битриксе делал приложения для Android на Java и
> Kotlin (который там внедрял я).

Раскрою тебе секрет: разработчик под мобилки такой же формошлеп.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 19:55 
Раскрою тебе секрет: я не пишу под Андроид уже лет 8. И ещё один: в нём кроме UI ещё много всего. Ну да ладно, куда мне до тебя, ты же, поди, работаешь с бигдатой, ИИ, запускаешь спутники, а в перерывах пишешь компиляторы.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 21:51 
> Раскрою тебе секрет: я не пишу под Андроид уже лет 8.

Такс. Ты вроде как хвалился тем, что писал под Андроид, что не формошлеп, а теперь пошли оправдания "не пишу уже 8 лет".

> И ещё один: в нём кроме UI ещё много всего.

Не поверишь, но джаваскриптизеры также говорят.

> Ну да ладно, куда мне до тебя, ты же, поди, работаешь с бигдатой, ИИ, запускаешь спутники, а в перерывах пишешь компиляторы.

Во всех вышеупомянутых областях используется С, С++, Python, которые ты так ненавидишь. Ой. Получается ты приводишь в пример то, что ненавидишь. Как же так?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 21:45 
> в ней нет кривой работы с памятью и последняя не течёт.
> не течёт

Откуда такая уверенность?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 22:14 
Во-первых, оттуда, что я не писал такой код, в котором даже теоретически может течь. Во-вторых, valgrind. А в-третьих, я научился у местной сишной интеллигенции одному хитрому трюку: делаешь умное лицо и сразу просто знаешь, что твой код лучше, а все, кто не согласен - быдло.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 22:41 
> Во-первых, оттуда, что я не писал такой код, в котором даже теоретически может течь.

А доказательско теории где можно посмотреть?

> Во-вторых, valgrind.

Тестирование программ может оказать наличие ошибок, но никогда не покажет их отсутствие. (с) Дейкстра

> А в-третьих, я научился у местной сишной интеллигенции одному хитрому трюку: делаешь умное лицо и сразу просто знаешь, что твой код лучше, а все, кто не согласен - быдло.

Вижу сишная интеллигенция тебе не сказала, что это не работает для быдла.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 23:43 
> А доказательско теории где можно посмотреть?

Динамическое выделение памяти не используется, течь не может в принципе. Если хочешь формальное доказательство - доказывай сам на здоровье. Но лучше не страдай фигнёй, а научись пользоваться спеллчекером.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 29-Дек-22 01:24 
> Динамическое выделение памяти не используется, течь не может в принципе.

Что растоманы подразумевают под динамическим выделением?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 29-Дек-22 01:31 
То же, что и синяки. Есть такой классный сервис для поиска информации по фразам, называется Google, очень рекомендую. Я понимаю, что любые высказывания "растоманов" здесь принимаются в штыки, независимо от смысловой нагрузки, но сервис действительно хорош, и его используют миллиарды людей во всём мире. Например, среди первых результатов есть ссылка на статью в Wikipedia. Это, кстати, ещё один замечательный сервис, база знаний. Там можно узнать много интересного про компьютеры.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 29-Дек-22 01:35 
> То же, что и синяки. Есть такой классный сервис для поиска информации
> по фразам, называется Google, очень рекомендую. Я понимаю, что любые высказывания
> "растоманов" здесь принимаются в штыки, независимо от смысловой нагрузки, но сервис
> действительно хорош, и его используют миллиарды людей во всём мире. Например,
> среди первых результатов есть ссылка на статью в Wikipedia. Это, кстати,
> ещё один замечательный сервис, база знаний. Там можно узнать много интересного
> про компьютеры.

Вижу ты совершенно не понимаешь, что происходит у тебя в коде.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 29-Дек-22 02:31 
А ты понимаешь, что происходит у меня в коде? Как насчёт челленджа: найти утечку памяти в risky v0.4.0. Разумеется, я шучу, потому что:
1. Я не настолько мизантроп, чтобы просить кого-то искать утечки памяти там, где их быть не может по определению, в 6600 строках кода.
2. Всё равно никто здесь на это не решится по разным причинам:
- Нет желания
- Нет времени
- Нет компетенции
- Нет даже базового знания Rust
- Да просто потому что иди нахрен

Ладно, без шуток, теперь аргументируй, в чём я неправ насчёт утечек памяти и динамического её выделения. Я - человек не гордый, умею признавать ошибки (как это было с занулением указателей через calloc в каком-то треде).


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 29-Дек-22 15:00 
> Растоман общается как недоразвитый подросток

Вот мне интересно, ты и правда настолько глуп, или просто притворяешься, что не понял, что эта известная фраза как бы исходит от читателя моего кода, в жалкой попытке выставить меня неадекватом? Боже, с кем я веду диалог... просто невыносимый уровень тугости.

> дальше можешь не стараться.

Ай молодец, отмазался. Я и не сомневался, что ты только в лужу пердеть можешь, а код даже читать не умеешь и, скорее всего, его даже боишься, потому что он заставляет думать.

Ты второй за всё время, кого я добавлю в игнор. И я на 100% уверен, что ты будешь гордиться этим, будто неким достижением: мол, гагага, затралил растомана. Молодец, возьми с полки пирожок и дальше смотри мультики под пиво и играй в майнкрафт, или чем там занимаются школьники в свободное время, кроме троллинга на опеннете.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 29-Дек-22 16:22 
>[оверквотинг удален]
> я веду диалог... просто невыносимый уровень тугости.
>> дальше можешь не стараться.
> Ай молодец, отмазался. Я и не сомневался, что ты только в лужу
> пердеть можешь, а код даже читать не умеешь и, скорее всего,
> его даже боишься, потому что он заставляет думать.
> Ты второй за всё время, кого я добавлю в игнор. И я
> на 100% уверен, что ты будешь гордиться этим, будто неким достижением:
> мол, гагага, затралил растомана. Молодец, возьми с полки пирожок и дальше
> смотри мультики под пиво и играй в майнкрафт, или чем там
> занимаются школьники в свободное время, кроме троллинга на опеннете.

Ахахаха. Забанил анонима. Если ты такая истеричка, то лучше вообще сюда не заходи.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Прохожий , 29-Дек-22 09:10 
Он прекрасно понимает, думаю. А вот ты базовой терминологией не владеешь, что, впрочем, для местного "эксперта" неудивительно. Ты, кстати, так и не ответил, с чем работаешь и в какой области. Ни одного проекта не привёл в ответ. Что весьма и весьма хорошо характеризует тебя.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 29-Дек-22 14:26 
> Он прекрасно понимает, думаю.

Он прекрасно показал, что не понимает ничего. Еще и сдеанонился.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:13 
Ещё как у Раста течёт. Этож способ защиты от use-after-free.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено анон , 27-Дек-22 13:30 
Я бы рассказал шутку про раст, но она не поместится в стек.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 27-Дек-22 15:53 
Я бы рассказал шутку про C, но Й№28(%3?*№3Х{>?5ц
Segmentation fault

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 17:17 
> Я бы рассказал шутку про C, но Й№28(%3?*№3Х{>?5ц
> Segmentation fault

Вот что бывает, когда растоман пытается пошутить в unsafe блоке.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 21:52 
Ой-ой-ой, синяки обиделись и накидали минусов, а теперь ещё и вяло петросянят об этом, я расстроен до глубины ноздри. По твоей логике, вы сами-то даже думаете в одном большом unsafe блоке, что объясняет качество ваших антирастовых шуток: гага в расте стек переполнен (сказал пользователь языка, популяризовавшего термин stack overflow, лол), гага растоманы (шутки про наркотики всегда актуальны среди зрителей Камеди кала).

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 21:57 
> Ой-ой-ой, синяки обиделись и накидали минусов, а теперь ещё и вяло петросянят
> об этом, я расстроен до глубины ноздри. По твоей логике, вы
> сами-то даже думаете в одном большом unsafe блоке, что объясняет качество
> ваших антирастовых шуток: гага в расте стек переполнен (сказал пользователь языка,
> популяризовавшего термин stack overflow, лол), гага растоманы (шутки про наркотики всегда
> актуальны среди зрителей Камеди кала).

У тебя мусор в голове. Просто нормальные люди видят плюсы и минусы, а ты только плюсы или только минусы.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 22:19 
То есть, ты сейчас подтвердил, что 90% комментаторов про Rust - ненормальные, потому что видят в нём одни минусы.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 22:32 
> То есть, ты сейчас подтвердил, что 90% комментаторов про Rust - ненормальные,
> потому что видят в нём одни минусы.

Я же говорю у тебя мусор в голове. Ты видишь, что хочешь видеть.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 28-Дек-22 23:44 
Ты вообще много говоришь. Иди код пиши лучше, балабол.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 29-Дек-22 01:16 
> Ты вообще много говоришь. Иди код пиши лучше, балабол.

Этот растаман порвался, несите следующего


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:18 
Нужен новый shell, безопасная работа с памятью которого обеспечивается во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Анонус , 27-Дек-22 12:22 
> Нужен новый shell, безопасная работа с памятью которого обеспечивается во время компиляции
> через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов
> (области видимости), а также через оценку корректности доступа к памяти во
> время выполнения кода. Также предоставляет средства для защиты от целочисленных переполнений,
> требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает
> ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок
> и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических
> ошибок.

Нужен. Например на Lua.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:37 
Идеальный вариант!
Самый быстрый некогда интерпретатор. Достаточно пластичный и мощный язык.
На фоне баша, ему можно простить даже кривость инопланетного синтаксиса.

Есть ли варианты, вроде IPython и Xonsh?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:39 
Язык хороший, но в качестве замены шелла не взлетит. Замена шеллу - это перл. Нравится вам это или нет. И это уже 30 лет так.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:41 
Есть ли у перла варианты типа Xonsh?
Perl конечно... так себе замена то. Вот это видеть ГА;) К*Г)*а4гн8кн82 вместо [[ $RE -gt 2 ]]

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:40 
Кривой баш, в любом случае, давно уже требует замены. Привыклю корячиться буквой зю, и ничего не меняется. Школьники уже даже умудряются боготворить его идеальность.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:47 
Баш ужасен, и с этим не поспоришь, но позикс шелл с bsd-шными coreutils ещё хуже — там потенциал выстрелить себе в ногу на два порядка выше

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:54 
Суть в том, что баш это очень кривая подпорка, на сегодняшний день.
Люди делают его замены, меньшей кровью. Успешно. Оболочка ZSH недалеко ушла, но куда удобней.
Fish ушел еще дальше и боли меньше. Но концептуально, на претендента замены подходят лишь IPython и  Xonsh.
Т.е. люди это осознают давно уже и даже есть вариант - пайтон в основе.
Интересно, пробовал ли кто-то луа.. люди на реддите очень хотят луа на этом месте видеть. И даже есть интересные варианты использования. Но по существу, воз и ныне там.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:08 
Проблема в том, что эта подпорка есть везде. Может быть когда-нибудь, лет эдак через -цать, когда питон станет главной зависимостью во всех линуксах, люди начнут перебираться на шелл на основе него, а пока — скрипты для пакетов будут писаться на sh с пригоршней башизмов, клей в Dockerfile будет писаться на sh с привкусом смузи и томатного гозе и весь мир будет прилаживать костыли и подпорки к получившейся хтони

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 15:06 
Питон это антипод юниксвэя. Может сделать что угодно, но делает все одинаково паршиво.

И совершенно не способствует разделению системы на мелкие быстрые и эффективные кирпичики объединяемые более высокоуровневым координатором через пайпы под конкретную задачу. Вместо этого вы скорее получите монолитное здоровенное блоатваре, являющейся пародией на нормальную программу и требующее переписывания раз в полгода. В этот момент все как раз все и узнают что такой код майнтенансу не подлежит, так что период полураспада подобных конструкций - очень сильно более другой по сравнению с даже, вот, шеллскриптом обычным.

А приколитесь, шелскрипт эпохи питона 2.4 прекрасно заработает на моей системе. Без танцев с бубнами. А теперь попробуйте это с скриптом на питоне 2.4 в современной системе повторить и чтоб не переписать минимум половину при этом. Ну и вот зачем бы такая системная автоматизация нужна? Чтобы убивать на ее майнтенанс времени больше чем она экономит на решении тех задач?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Вы забыли заполнить поле Name , 28-Дек-22 03:36 
> А теперь попробуйте это с скриптом на питоне 2.4 в современной системе повторить и чтоб не переписать минимум половину при этом.

Дичь поришь. Берешь 2.7 и запускаешь скрипт.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 17:32 
Данунафиг, антипод юниксвэя. Делает что угодно и одинаково фигово. Ведет к тому что вместо нормальных кирпичиков объединяемых вон тем - здоровенные шевелящиеся монстры с щупальцами, которые страшно трогать руками.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:43 
Power Shell.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено амоним , 27-Дек-22 13:22 
вот кстати, отличное решение. есть команды - согласен. и вывод, в json есть. который всегда можно распарсить, не непонятными регулярными выражениями, которые разваливаются на ходу, а нормальным json парсером, получить те данные которые нужно и проч.
единственная проблема - родные системные утилиты не дают выхлоп в таком формате.
а башем, парсить строковый вывод - это про времена, когда всю ось мог написать один Линус. а сегодня - это про мазохизм.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:57 
пожалуйста, изложите свои мысли в виде json-а а то вас трудно парсить

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Жироватт , 27-Дек-22 12:47 
Нужен новый шелл-ланг, который как %хайповый_язычок%, но другой.
Под новый шелл-ланг нужен новый интерпретатор, мегабайт на сто, как МощныйРакушка.
Под новый интерпретатор нужно новое системное окружение, где он *сможет_раскрыть_потенциал*.
Под новое окружение нужны новые принципы создания аварийных и удаленных оболочек, чтобы юзер не умер в чистом sh.
...

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено GUIX , 27-Дек-22 19:40 
Про Scheme уже было?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Ноня , 28-Дек-22 18:58 
В удалённых.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:14 
Какая ещё компиляция при скриптовании?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Ноня , 27-Дек-22 13:57 
sbcl когда-нибудь видел? вот это оно

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 18:54 
https://www.oilshell.org/
https://www.nushell.sh/

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 23:22 
лучше уж es-shell воскресить
https://wryun.github.io/es-shell/

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:38 
Попытки из шелла и скриптовых языков делать что-то квазитипизированное - это клиника.
На шелле не надо программировать. Он не для этого. В юникс даже не обязательно писать на скриптовых языках. Вас никто не заставляет использовать инструменты, с мощью которых вы не можете справиться.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:02 
Если шелл не для того чтобы программировать, то почему в System V на нём писали программы?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:17 
Сам SysVinit на Сишке. А на bash там писали и пишут скрипты.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 13:50 
Я не готоврю про sysVinit. Я говорю про AT&T UNIX System V. diff3, spell, basename, uuto, dirname, man, install и многие другие команды написаны на shell.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено ПАНК программист а не кодер , 27-Дек-22 14:06 
Так и деды и в лаптях на телеге когда-то ездили, и что?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 14:55 
>diff3, spell, basename, uuto, dirname, man, install и многие другие команды написаны на shell.

все перечисленные тобой утилиты написаны на Си


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 15:47 
В этом юниксвэй и состоит: объединять быстрые эффективные кирпичики вон тем координатором через пайпы. А то что народ из инструмента для glue-логики зачем-то временами чуть не мегаприложухи пытается, так что сабж требоваться начинает - бывает и такое, конечно.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Ноня , 27-Дек-22 16:18 
>А то что народ из инструмента для glue-логики зачем-то временами чуть не мегаприложухи пытается

Так выходит же - почему не пытаться?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 19:10 
> Так выходит же - почему не пытаться?

Ну да, а у другого тут выходит видео блендером редактировать. Можете попробовать еще объяву на забор в автокаде написать, почему не пытаться? :)


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Ноня , 28-Дек-22 19:01 
>Ну да, а у другого тут выходит видео блендером редактировать. Можете попробовать еще объяву на забор в автокаде написать, почему не пытаться? :)

Когда это блендер и автокад стали универсальными инструментами навроде шелла?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 23:57 
> Когда это блендер и автокад стали универсальными инструментами навроде шелла?

Я бы не стал настаивать что он вот именно универсальный.

Конкретный пример: написать HTTP сервер на шелле ну не то чтобы вообще совсем нельзя, но, поверьте, это крайне паршивая идея.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Ноня , 01-Янв-23 22:42 
>Я бы не стал настаивать что он вот именно универсальный.

Какой есть, универсальней особо нет. Язычок для управления программ, внезапно на котором при наличии достаточного числа этих самых программ можно написать что угодно, если надо.

>Конкретный пример: написать HTTP сервер на шелле ну не то чтобы вообще совсем нельзя, но, поверьте, это крайне паршивая идея.

inetd и готово, работать будет, причём такую портянку можно засунуть в роутер и будет не хуже дырок на пхп.

Ето если про werc ещё не вспоминать, правда вот шелл там уже немножечко другой, но суть одна.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 18:10 
Не в System V. Значит всё же он изначально и задумывался для программирования утилит

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Ноня , 27-Дек-22 14:16 
>Попытки из шелла и скриптовых языков делать что-то квазитипизированное - это клиника.

Только в том случае, если накладывание типов не тащит за собой контракты (тут можно поспорить) или реальную оптимизацию кода (а тут нельзя). Ничего из этого подгавкиватели за тайпскриптом и сам тайпскрипт не делают.
Иногда, конечно, в шелле (ash) подкорке мозга не хватает структур данных, но пережить это можно.

>На шелле не надо программировать.

Надо, пайплайн на шелле проживёт дольше портянки на питоне.

>В юникс даже не обязательно писать на скриптовых языках.

Если пишуший не проникся философией юникс. Ну как здоровому ходить в инвалидной коляске. Я считаю так: не освоившему базовые навыки компьютерной грамотности на юниксе делать нечего - иначе юникс очень быстро и окончательно вместо годного инструмента станет большой инвалидной коляской.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено ПАНК программист а не кодер , 27-Дек-22 14:36 
Всё-то, может, и по делу, и верно, но только суть баша от этого не меняются: встратый синтаксис, несколько слоёв expansion-ов, shopt-магия и так далее. Баш, может быть, мощный инструмент, хороший инструмент, но точно не удобный или современный инструмент, о чём тут спорить вообще.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 16:14 
>синтаксис

Годный синтаксис у обычного шелла, что надо умещает получше любого питона, про башизмы тебе не отвечу.

>несколько слоёв expansion-ов, shopt-магия

Да наплевать. Наквотил разик, запомнил и забыл. Больше двух уровней обратных кавычек редко бывает. Из опций только трассировка и может быть полезной в основном, ну -e плюс-минус, магии в этом нет.

>не удобный

busybox ash делает бррррр, работа делается, что ещё надо? Даже репл есть.

>или современный

Т.е. знания шелла не обесцениваются. Это наоборот плюс.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Прохожий , 29-Дек-22 09:43 
>Годный синтаксис у обычного шелла

Гов-ный там синтаксис. Ты хоть статью почитай, что ли. Пробел лишний поставил - уже проблему получил. Не поставил - снова проблема. Что здесь может быть хорошего?

>что надо умещает получше любого питона

Нихрена обычный шелл толком не умеет, особенно без утилит, типа awk, grep, sed, find, tr, basename, dirname и прочих.
У каждой такой утилиты, понятное дело, свой мозговыносящий синтаксис,что тоже никак не добавляет читабельности программ на шелле.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 30-Дек-22 23:02 
Хорошего здесь то что с таким синтаксисом ты можешь делать присвоение прямо в команде:
foo=123 proga

Если разрешить пробелы при присвоении будет неоднозначность.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено commiethebeastie , 27-Дек-22 12:39 
Line 1:
rm -rf /usr /bumblebee
       ^-- SC2114 (warning): Warning: deletes a system directory.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 14:55 
Ну, как видишь, работает. Не на...ли :)

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено commiethebeastie , 27-Дек-22 15:44 
Действительно работает, если убрать пробел, то ложного срабатывания не будет.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 12:48 
Настоящими программистам все эти проверки не нужны, они нужны только всяким там, которые даже язык не знают на котором пишут

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено burjui , 27-Дек-22 14:06 
Есть одна проблема с вашим определением термина "настоящий программист": таких не существует. Нет и не было за всю историю человечества ни одного индивида, который бы не совершал ошибок. Конечно, если это мелкий одноразовый скрипт для не слишком важной ерудны, то цена ошибки настолько мала, что можно обойтись и без статического анализатора. Но если он уже есть, не пользоваться им - безумие.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Ноня , 27-Дек-22 14:45 
Так там одна часть в рекламке шеллчека так и гласит: ищут ошибки новичков, и шоб никаких криптик мессаджес!

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 14:55 
> статического анализа shell-скриптов

Блин, если вам это понадобилось, вы что-то, вероятно, делали не так.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 15:18 
согласен. ошибки нужно искать не в коде, а в ДНК

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 15:08 
У баша какие-то проблемы с совместимостью. Несколько лет всё прекрасно работало, а тут он в 5.2 фейлится на ?() в $() и надо теперь вместо $() использовать обратные кавычки. При этом, в синтетическом коде это не проявляется и надо было догадаться, где проблема.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 09:26 
Покажи код, аноним. Баш не должен фейлиться на $() никогда.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 14:39 
Да, я тоже думал проблема может быть в другом месте, но она именно тут (похоже, дело именно во вложенной ?(), но если с ней что-нибудь сделать, glob не будет работать, как надо)

line 90: syntax error near unexpected token `('

shopt -s extglob
fname=$(shopt -s failglob;shopt -s nocaseglob;echo "${fname}"/?("${BASH_REMATCH[1]}")"${BASH_REMATCH[2]}${BASH_REMATCH[3]}"$pext)
[[ 0 -ne $? ]] && echo '#glob match failed' && exitnow
shopt -u extglob

До bash-5.2 всё было норм, 0 проблем с файлами. Этот скрипт генерирует страничку для веббраузера, и в один прекрасный день он просто перестал это делать(


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено швондер , 29-Дек-22 12:02 
>[оверквотинг удален]
> именно тут (похоже, дело именно во вложенной ?(), но если с
> ней что-нибудь сделать, glob не будет работать, как надо)
> line 90: syntax error near unexpected token `('
> shopt -s extglob
> fname=$(shopt -s failglob;shopt -s nocaseglob;echo "${fname}"/?("${BASH_REMATCH[1]}")"${BASH_REMATCH[2]}${BASH_REMATCH[3]}"$pext)
> [[ 0 -ne $? ]] && echo '#glob match failed' && exitnow
> shopt -u extglob
> До bash-5.2 всё было норм, 0 проблем с файлами. Этот скрипт генерирует
> страничку для веббраузера, и в один прекрасный день он просто перестал
> это делать(

У меня ваш код работает ожидаемо в GNU bash, версия 5.1.16(1)-release (x86_64-pc-linux-gnu)

в 5.1 эта ошибка синтаксиса вылетает, если extglob не задавать, "?()" будет некорректным. Ваш пример загрязнен BASH_REMATCH и прочими неимеющими отношения к вопросу деталями. это затрудняет диагностику.
Могу предположить, что если у вас вылетает не описанная вами ошибка про line 90, но просто не находится файл, то беда в том, что нет матча на содержимое ?(), при failglob будет ошибка матчинга. То есть, вы указали что мол вам и не нужно то, что в скобках, но это все равно будет fail globbing.
В генте 5.2 ещё маскирован, как обновится - проверю ещё раз ваш кейз. Должен работать.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 29-Дек-22 12:31 
Нет, баш в генте 5.2 в тестовой ветке, не замаскирован. Я уже говорил, что в синтетическом примере не проявляется, поэтому нет смысла. Это была копия проблемного кода и я отдельно убедился, что дело именно в нём. Баш вообще не пытается исполнить этот файл, поэтому переменные никакого значения не имеют.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено швондер , 31-Дек-22 17:27 
> Нет, баш в генте 5.2 в тестовой ветке, не замаскирован. Я уже
> говорил, что в синтетическом примере не проявляется, поэтому нет смысла. Это
> была копия проблемного кода и я отдельно убедился, что дело именно
> в нём. Баш вообще не пытается исполнить этот файл, поэтому переменные
> никакого значения не имеют.

не поленился, собрал локально 5.2 в хомовике, сделал минимальный сампл на базе вашего кода, накидал файликов под матч ?() - вижу пока одно и то же поведение как с системным 5.1, так и с bash-5.2/bash.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 29-Дек-22 12:35 
Кстати local pext='@(*.mkv|*.mp4|*.avi)' поэтому да, extglob.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено швондер , 31-Дек-22 17:23 
так у вас какая именно ошибка? Вижу две в вашем сообщении
1. некорректный синтаксис line 90  -это очень похоже на отключенный extglob
2. файл не находится
Если 2 это следствие №1, то это одна ситуация. Если №2 на одном и том же наборе файлов и минимальном пруфе работает по разному на разных версиях баша  - это надо репортить.
Давайте запилим минимальный пруфик бага?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 31-Дек-22 21:11 
Файл находится в 5.1 и не находится в 5.2? И при чём тут файл, если баш не пытается выполнять этот код, который ему не нравится? В этом у баша большая проблема, если ему что-то не нравится, приходится играть в угадайку. Технически этот код подстановки заранее неизвестного имени даже не использовался, потому что скрипту надо передать каталог вместо файла и это никогда так и не использовалось. Но, я уверен, что он корректный и всё работает, как и ожидалось, специально это проверил. Тут большая проблема, что extglob не работает корректно с @ в имени. Просто внезапно баш после обновления решил, что надо использовать обратные кавычки тут. Выглядит 100% как баг, или регрессия.

Вот полный пример кода, в котором $() не работает, но кавычки работают как и с 5.1.

#!/bin/env bash

process_dirname(){
    local pext='@(*.mkv|*.mp4|*.avi)'
    shopt -s extglob
    fname=$(shopt -s failglob;shopt -s nocaseglob;echo "${fname}"/?("123")"qwe"$pext)
    [[ 0 -ne $? ]] && echo '#glob match failed' && exit 1
    shopt -u extglob

    if [[ ! -f "${fname}" ]];then
        echo "new filename ${fname@Q} couldn't be located, didn't guess the filename correctly"
        exit 1
    fi
    echo "# filename for ${file@Q} changed to ${fname@Q}"
}

file="$@"
[[ -n "${file}" ]] || { echo -e "Usage:\t$0 FILENAME"; exit 1; }

fname="${file##*/}"
fpath="${file%/*}"
[[ -d "${fname}" ]] && process_dirname

Ещё раз, дело именно в синтаксической ошибке от $(?()) и не в чём-либо ещё.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено швондер , 01-Янв-23 12:23 
>[оверквотинг удален]
>     echo "# filename for ${file@Q} changed to ${fname@Q}"
> }
> file="$@"
> [[ -n "${file}" ]] || { echo -e "Usage:\t$0 FILENAME"; exit 1;
> }
> fname="${file##*/}"
> fpath="${file%/*}"
> [[ -d "${fname}" ]] && process_dirname

> Ещё раз, дело именно в синтаксической ошибке от $(?()) и не в
> чём-либо ещё.

вы не поверите, но этот код зависит от файлов, которые находятся - или не находятся. Предлагаю собрать локально 5.2 и 5.1, и убедиться, что оба интерпретатора работают идентично, вызывая прямо ~/src/bash-5.1/bash ./script.sh и ~/src/bash-5.2/bash ./script.sh
Трюк с VAR=$(echo $VAR) это фактически аналог разыменовывания указателя, получения конкретного значения переменной, вместо вычисления переменной каждый раз. Именно для него вам понадобились здесь shopt. В тонком месте и порвалось, ни одно кодеревью этот код не прошел бы; но всё-таки, врядли дело в версии баш. прошу проверить через выполнение именно разными версиями, установленными локально. С новым годом!


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 01-Янв-23 13:14 
Этот код ни от чего не зависит, если он не интерпретируется. Не понимаю, что тонкого в ?(), если extglob -- это штатная функциональность баша? Я уже уже собирал баш 5.0_p18 и 5.1_p16-r2 -- в них нет ошибки синтаксиса, которая возникла сразу после размаскировки 5.2_p15 пару месяцев назад. Более ранние рассматривать нет смысла, в остальном коде присутствует максимально много башизмов, потому что только они позволяют писать профессиональный и устойчивый к ошибкам и уязвимостям код без лишних зависимостей (у которых будут свои особенности опять же). Конкретно приведённый код демонстрирует эту ошибку в 5.2_p15, её там быть не должно, либо $() вообще нельзя использовать нигде и никак.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено швондер , 01-Янв-23 14:49 
> Этот код ни от чего не зависит, если он не интерпретируется. Не
> понимаю, что тонкого в ?(), если extglob -- это штатная функциональность
> баша? Я уже уже собирал баш 5.0_p18 и 5.1_p16-r2 -- в
> них нет ошибки синтаксиса, которая возникла сразу после размаскировки 5.2_p15 пару
> месяцев назад. Более ранние рассматривать нет смысла, в остальном коде присутствует
> максимально много башизмов, потому что только они позволяют писать профессиональный и
> устойчивый к ошибкам и уязвимостям код без лишних зависимостей (у которых
> будут свои особенности опять же). Конкретно приведённый код демонстрирует эту ошибку
> в 5.2_p15, её там быть не должно, либо $() вообще нельзя
> использовать нигде и никак.

пруф должен выглядеть так:
mkdir test
cd test
mkdir dir
touch dir/{имена_файлов_под_матч}
~/src/bash-5.1/bash ~/src/script  - работает
~/src/bash-5.2/bash ~/src/script  - не работает


пока этого нет - говорить о регрессе бессмысленно.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 01-Янв-23 15:19 
Зачем мне это? Я накатил старые версии интерпретатора, которые есть в репах, и убедился, что у них всё нормально. Этого более чем достаточно. Но ладно

https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz

~ $ ./configure
~ $ make
~ $ ./bash -x ~/bin/bashextglob.sh 123
~/bin/bashextglob.sh: line 6: syntax error near unexpected token `('
~/bin/bashextglob.sh: line 6: `    fname=$(shopt -s failglob;shopt -s nocaseglob;echo "${fname}"/?("123")"qwe"$pext)'

ожидаемый результат выглядит вот так

~ $ bash -x ~/bin/shitsniffer3.sh 123
+ file=123
+ [[ -n 123 ]]
+ fname=123
+ fpath=123
+ [[ -d 123 ]]

Сколько раз надо повторить, что дело не в файлах? Это уже 10 вроде.


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено швондер , 01-Янв-23 18:29 
>[оверквотинг удален]
> "${fname}"/?("123")"qwe"$pext)'
> ожидаемый результат выглядит вот так
> ~ $ bash -x ~/bin/shitsniffer3.sh 123
> + file=123
> + [[ -n 123 ]]
> + fname=123
> + fpath=123
> + [[ -d 123 ]]
> Сколько раз надо повторить, что дело не в файлах? Это уже 10
> вроде.

так у вас разные скрипты вызываются?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 01-Янв-23 18:36 
Нет, это один файл. Я же написал, как повторить (когда я пытался воспроизвести на минимальном примере в прошлый раз, почему-то не получилось).

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 16:18 
Они не могли придумать более оригинального названия? И как мне гуглить это и искать в репах?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 16:52 
От названия прямо-таки пахнет тем, что эти ребятки юниксом никогда не проникались. Ещё для бинго можно было бы домен .io зарегать.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено onanim , 28-Дек-22 11:01 
$ cnf shellcheck
                            
The program 'shellcheck' can be found in following packages:
  * ShellCheck [ path: /usr/bin/shellcheck, repository: zypp (repo-oss) ]
  * ShellCheck [ path: /usr/bin/shellcheck, repository: zypp (openSUSE-Tumbleweed) ]

Try installing with:
    sudo zypper install ShellCheck


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Самый умный из вас , 27-Дек-22 17:20 
Если человек в своём профиле пишет, что ему нравится кодить на sh, к нему стоит присмотреться

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено 1 , 27-Дек-22 17:36 
психиатрам

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Самый умный из вас , 27-Дек-22 23:16 
Или девушкам, как к завидному жениху и уверенному в себе мужчине? 🤔

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 23:17 
Вот это и скажешь человеку, умеющему кодить на шелле, когда в очередной раз в слезах к нему обратишься с тем, что ты куда-то нажала и оно перестало запускаться, хорошо, дорогуша?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Xasd8 , 27-Дек-22 17:37 
> а использование "echo {1..10}" будет выделено как несовместимое с dash и sh.

ох тыж! ды кому какое дело до этих dash и sh ?


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 18:26 
Меинтейнерам пакетов Debian

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено warlock66613 , 27-Дек-22 18:55 
Тому кто хочет чтобы его скрипт можно было запустить? На нормальной системе, где нет места bash я имею в виду.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 28-Дек-22 19:16 
Такие системы называются легаси их всё меньше и меньше. Сегодня, если на операционной системе общего назначения не существует баша, это показатель её непригодности к промышленному использованию. Практика деплоев тому доказательством.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Мононим , 27-Дек-22 18:09 
Не хватает только канпелятора.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Мононим , 27-Дек-22 18:10 
А, да, ещё объект-ориентированности, статической типизации и обязательно всё на хрусте.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено warlock66613 , 27-Дек-22 18:54 
Штука отличная.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Kirikekeks , 27-Дек-22 19:33 
Много лет выпущенная гуглем Salt bash записки на пипифаксе для меня прям настольный пипифакс. А анализатор, это хорошо, особенно когда свой забытый скрипт надо переделать. Тем более что спросить про bash стеснительно, как пёрнуть в обществе, а очень напрасно. Не любо не слушай, а врать не мешай. Я помню несколько ситуаций, когда высоколобые многомудрые девы реально готовы были потратить нехилые деньги на проблемы решаемые однострочником на баш. Да и гугловое руководство тоже похоже на "к вящему сожалению совсем без bash не получится, но хотябы делайте так, а?"

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Карабьян , 27-Дек-22 19:41 
Какой области девы? По специализации

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено EuPhobos , 27-Дек-22 21:17 
Совет на скриншоте: "используйте bc или awk" просто "гениальный"..
"Не используйте встроенные фишки в интерпретаторе, лучше создайте ещё один процесс через конвейер и посчитайте в нём" - что за бред?

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 23:05 
какие еще встроенные фишки для дробных чисел, ты о чем ?

n=3.6
if (( n > 3.5 )); then
  echo $n
fi

даже сам bash-интерпретатор вылетает от такого кода:
строка 5: ((: 3.6 > 3.5 : ошибка синтаксиса: недопустимый математический оператор (неверный маркер «.6 > 3.5 »)


"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено Аноним , 27-Дек-22 23:06 
на том же скриншоте написано, что шелл не умеет работать с дробями (а ash, dash, bash вроде как не умеют

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено EuPhobos , 28-Дек-22 08:32 
Да, что-то я дроби не увидел сразу, подумал чекер даёт совет считать всегда в сторонних программах.

"Доступен ShellCheck 0.9, статический анализатор для shell-ск..."
Отправлено onanim , 28-Дек-22 11:03 
не знал о существовании этой тулзы, спасибо!