The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

27.12.2022 11:50

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

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

Из классов выявляемых ошибок можно отметить проблемы с экранированием спецсимволов и обрамлением в кавычки, ошибки в условных выражениях, неверное использование команд, проблемы обработки времени и дат, и типовые синтаксические ошибки новичков. Например, отсутствие пробелов при сравнении "[[ $foo==0 ]]", наличие пробелов "var = 42" или указание символа $ при присвоении "$foo=42", использование переменных без кавычек "echo $1", указание лишних квадратных скобок в "tr -cd '[a-zA-Z0-9]'",

Дополнительно поддерживается вывод рекомендаций по улучшению стиля кода, устранению проблем с переносимостью и повышению надёжности работы скриптов. Например, вместо "echo $[1+2]" будет предложено использовать синтаксис "$((..))", конструкция 'rm -rf "$STEAMROOT/"*' будет отмечена как небезопасная и способная удалить корневой каталог при незаполнении переменной $STEAMROOT, а использование "echo {1..10}" будет выделено как несовместимое с dash и sh.

В новой версии:

  • Добавлено предупреждение для выражений вида 'local readonly foo'.
  • Добавлено предупреждение о недоступности команд.
  • Добавлено предупреждение об обратных ссылках в 'declare x=1 y=$x'.
  • Добавлено предупреждение, если $? используется для выдачи кода возврата echo, printf, [ ], [[ ]] и test.
  • Добавлена рекомендация по удалению ((..))inarray[((idx))]=val.
  • Добавлена рекомендация по объединению двойных скобок в арифметических контекстах.
  • Добавлена рекомендация по удалению круглых скобок в выражении a[(x+1)]=val.


  1. Главная ссылка к новости (https://github.com/koalaman/sh...)
  2. OpenNews: Выпуск cppcheck 2.7, статического анализатора кода для языков C++ и С
  3. OpenNews: Выпуск PHPStan 1.0, статического анализатора для кода на языке PHP
  4. OpenNews: Facebook открыл код статического анализатора Mariana Trench
  5. OpenNews: Facebook представил Pysa, статический анализатор для языка Python
  6. OpenNews: Релиз свободного статического анализатора кода frama-clang 0.0.5
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58394-shellcheck
Ключевые слова: shellcheck, shell, bash
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (155) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:01, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +32 +/
    must have для всех местных экспертов
     
     
  • 2.17, Жироватт (ok), 12:41, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да в принципе для всех нужная, но не необходимая.
    Ошибается даже самый маститый гуру консоли, особенно с недосыпу или в цейтноте.
     
     
  • 3.76, Аноним (-), 16:44, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Новые мозги анализатор не поставит.
     
     
  • 4.106, анонна (?), 21:05, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    но он позволит создавать скрипты не подверженные опасным ошибкам. я вообще удивляюсь как никому в голову не пришло создать такой инструмент раньше. это же по сути анализ текста и сверка его с правильным шаблоном(хотя и несколько сложнее). кстати в си и с++ такой анализатор был бы просто спасением в свое время. хотя если с си это можно сделать, то с плюсами куда сложнее. там столько напихали в язык  и продолжают пихать, что это окажется той еще задачкой.
     
     
  • 5.123, Аноним (123), 09:23, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >я вообще удивляюсь как никому в голову не пришло создать такой инструмент раньше

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

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

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

     
     
  • 6.143, анонна (?), 20:53, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    способны ли они в с++ разобраться вот вопрос. там слишком много подводных камней))
     
  • 4.130, Аноним (130), 13:14, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    У так называемых программистов, не знающих что такое шина адреса и шлепающих формы на скриптухах для верстальщиков типа java, их нет и не может быть.
     
  • 2.26, Аноним (26), 13:08, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –7 +/
    >Код проекта написан на языке Haskell

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

     
     
  • 3.53, Ноня (?), 14:56, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зато есть GNU/MIT Scheme.
     

  • 1.2, Аноним (2), 12:09, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Титаническая программа! От всей этой шелл-лапши никуда не деться, поэтому такой анализатор должен быть очень полезен.
     
     
  • 2.32, анон (?), 13:29, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Всегда считал, что вместо systemd надо было вложиться в такой анализатор или генератор скелета скриптов.
     
     
  • 3.35, Аноним (35), 13:43, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    и как ты на башпортянках реализуешь асинхронщину и параллельный взаимозависимый запуск служб? да ты споткнешься уже на простейшей задаче "дождаться, когда ядро обнаружит /dev/sda" (нет, делать по таймеру проверку на существование /dev/sda -- это не верное решение)
     
     
  • 4.46, Random (??), 14:37, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Никогда до systemd не встречал ситуации, что система не может стартовать, хотя бы и в неполном виде, из-за того, что не может чего-то дождаться.
     
     
  • 5.57, Аноним (-), 14:59, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Даже кернел так то умеет параметр rootwait. Догадаешься почему? А так то ты видимо еще много чего не встречал.
     
     
  • 6.65, Сушилин (?), 15:45, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Объясните пж не шарящиму, что это за зверь?
     
     
  • 7.68, Роман (??), 16:05, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Например ваш raid массив на 48 дисков инициализируется не мгновенно и root device таким образом недоступен если не подождать
     
     
  • 8.74, 1 (??), 16:28, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А потом что-то пошло не так и система не загружается никогда И Ctrl C не нажа... текст свёрнут, показать
     
     
  • 9.80, Роман (??), 16:57, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Нажимать ctrl c на bsd системах пожалуйста, кто ж запрещает... текст свёрнут, показать
     
  • 9.96, Аноним (-), 18:56, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то один из пойнтов RAID это сделать что-то пошло не так более редким яв... текст свёрнут, показать
     
     
  • 10.102, YetAnotherOnanym (ok), 19:38, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какой-то рут есть же, не Инитрамфс для чего придумали ... текст свёрнут, показать
     
     
  • 11.105, Аноним (-), 19:58, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, путем телепортации появляется Он опционален Может быть, может не быть ... текст свёрнут, показать
     
  • 10.117, Random (??), 01:00, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Иногда надо загрузиться на деградированном рейде - например, без одного диска в ... текст свёрнут, показать
     
  • 7.97, Аноним (-), 19:02, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Объясните пж не шарящиму, что это за зверь?

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

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

     
  • 4.58, анон (?), 15:00, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > реализуешь асинхронщину и параллельный взаимозависимый запуск служб

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

     
  • 4.75, Аноним (75), 16:38, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > да ты споткнешься уже на простейшей задаче "дождаться, когда ядро обнаружит /dev/sda"

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

     
     
  • 5.85, Аноним (35), 17:24, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > pid=0 запускается

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

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

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

     
     
  • 6.98, Аноним (-), 19:05, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Ты в курсе, что процесса с pid=0 не существует? Типичный критикан системд.

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

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

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

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

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

     
  • 4.182, freehck (ok), 16:45, 02/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > и как ты на башпортянках реализуешь асинхронщину и параллельный взаимозависимый запуск служб?

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

     
  • 3.55, Аноним (-), 14:58, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > генератор скелетов в шкафу

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

     
  • 3.118, Аноним (2), 01:18, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Всегда считал, что вместо systemd надо было вложиться в такой анализатор или
    > генератор скелета скриптов.

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

     

     ....большая нить свёрнута, показать (20)

  • 1.3, ip1982 (ok), 12:10, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Хорошо.
     
  • 1.4, Анонус (?), 12:12, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    >отсутствие пробелов при сравнении "[[ $foo==0 ]]", наличие пробелов "var = 42"

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

     
     
     
    Часть нити удалена модератором

  • 3.8, Аноним (1), 12:24, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    у раста по части памяти всё хорошо в сравнении с дедовыми плюсами, ведь она у него не течёт как у ски в месячные
     
     
  • 4.9, Аноним (9), 12:29, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Уровень лексикона растоманов понятен
     
     
  • 5.11, Вы забыли заполнить поле Name (?), 12:38, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Большинство местных растоманов  в пуберантном периоде
     
     
  • 6.40, burjui (ok), 14:02, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как и всех остальных -манов на этом ресурсе, что очевидно из всей демагогии в комментариях под любой новостью о Rust, да и не только. Настоящих спецов здесь крайне мало, будь то растоманов, сишников, приплюснутых, скорлупщиков и т.д. Рассадник самоуверенной школоты, короче. Сам не знаю, зачем читаю комментарии и отвечаю на них, но от детерминизма не убежишь.
     
     
  • 7.54, Аноним (-), 14:58, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Сам не знаю, зачем читаю комментарии и отвечаю на них

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

     
     
  • 8.63, burjui (ok), 15:41, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я считаю, что кодить меня научит только практика, чем я и занимаюсь Я больше не... большой текст свёрнут, показать
     
     
  • 9.110, Аноним (-), 22:29, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Гораздо выразительней этой стены текста с саморекламой говорят сами за себя выпа... текст свёрнут, показать
     
     
  • 10.116, burjui (ok), 23:39, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да мало ли, что они тебе говорят Сейчас бы прислушиваться к мнению какого хрена... текст свёрнут, показать
     
     
  • 11.122, Анончик (?), 09:17, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем вы себя мучаете этим программированием, непонятно Есть куча других профес... текст свёрнут, показать
     
     
  • 12.125, burjui (ok), 09:46, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем вы себя мучаете чтением моих комментариев, непонятно Есть куча другого те... текст свёрнут, показать
     
  • 9.119, Вы забыли заполнить поле Name (?), 03:31, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Очень жирно ... текст свёрнут, показать
     
     
  • 10.126, burjui (ok), 10:06, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Жирно или нет, но 1 Мне есть, что показать, чего не скажешь о местной школоте ... текст свёрнут, показать
     
     
  • 11.129, Вы забыли заполнить поле Name (?), 13:02, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С каких пор джаваскритпизеры стали сантехниками ... текст свёрнут, показать
     
     
  • 12.131, burjui (ok), 13:54, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ещё один выполз Я никогда не писал ни на JS, ни на PHP, а в Битриксе делал пр... текст свёрнут, показать
     
     
  • 13.134, Вы забыли заполнить поле Name (?), 16:39, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Раскрою тебе секрет разработчик под мобилки такой же формошлеп ... текст свёрнут, показать
     
     
  • 14.142, burjui (ok), 19:55, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Раскрою тебе секрет я не пишу под Андроид уже лет 8 И ещё один в нём кроме UI... текст свёрнут, показать
     
     
  • 15.145, Вы забыли заполнить поле Name (?), 21:51, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Такс Ты вроде как хвалился тем, что писал под Андроид, что не формошлеп, а тепе... текст свёрнут, показать
     
  • 11.144, Вы забыли заполнить поле Name (?), 21:45, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Откуда такая уверенность ... текст свёрнут, показать
     
     
  • 12.149, burjui (ok), 22:14, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Во-первых, оттуда, что я не писал такой код, в котором даже теоретически может т... текст свёрнут, показать
     
     
  • 13.152, Вы забыли заполнить поле Name (?), 22:41, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А доказательско теории где можно посмотреть Тестирование программ может оказать... текст свёрнут, показать
     
     
  • 14.153, burjui (ok), 23:43, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Динамическое выделение памяти не используется, течь не может в принципе Если хо... текст свёрнут, показать
     
     
  • 15.157, Вы забыли заполнить поле Name (?), 01:24, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что растоманы подразумевают под динамическим выделением ... текст свёрнут, показать
     
     
  • 16.158, burjui (ok), 01:31, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    То же, что и синяки Есть такой классный сервис для поиска информации по фразам,... текст свёрнут, показать
     
     
  • 17.159, Вы забыли заполнить поле Name (?), 01:35, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вижу ты совершенно не понимаешь, что происходит у тебя в коде ... текст свёрнут, показать
     
     
  • 18.160, burjui (ok), 02:31, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А ты понимаешь, что происходит у меня в коде Как насчёт челленджа найти утечку... текст свёрнут, показать
     
     
     
    Часть нити удалена модератором

  • 20.169, burjui (ok), 15:00, 29/12/2022 [ответить]  
  • –2 +/
    Вот мне интересно, ты и правда настолько глуп, или просто притворяешься, что не ... большой текст свёрнут, показать
     
  • 21.170, Аноним (170), 16:22, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    gt оверквотинг удален Ахахаха Забанил анонима Если ты такая истеричка, то лу... текст свёрнут, показать
     
  • 18.161, Прохожий (??), 09:10, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Он прекрасно понимает, думаю А вот ты базовой терминологией не владеешь, что, в... текст свёрнут, показать
     
     
  • 19.167, Вы забыли заполнить поле Name (?), 14:26, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Он прекрасно показал, что не понимает ничего Еще и сдеанонился ... текст свёрнут, показать
     
  • 4.28, Аноним (26), 13:13, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ещё как у Раста течёт. Этож способ защиты от use-after-free.
     
  • 4.33, анон (?), 13:30, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Я бы рассказал шутку про раст, но она не поместится в стек.
     
     
  • 5.67, burjui (ok), 15:53, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я бы рассказал шутку про C, но Й№28(%3?*№3Х{>?5ц
    Segmentation fault
     
     
  • 6.136, Вы забыли заполнить поле Name (?), 17:17, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Я бы рассказал шутку про C, но Й№28(%3?*№3Х{>?5ц
    > Segmentation fault

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

     
     
  • 7.146, burjui (ok), 21:52, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ой-ой-ой, синяки обиделись и накидали минусов, а теперь ещё и вяло петросянят об этом, я расстроен до глубины ноздри. По твоей логике, вы сами-то даже думаете в одном большом unsafe блоке, что объясняет качество ваших антирастовых шуток: гага в расте стек переполнен (сказал пользователь языка, популяризовавшего термин stack overflow, лол), гага растоманы (шутки про наркотики всегда актуальны среди зрителей Камеди кала).
     
     
  • 8.147, Вы забыли заполнить поле Name (?), 21:57, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    У тебя мусор в голове Просто нормальные люди видят плюсы и минусы, а ты только ... текст свёрнут, показать
     
     
  • 9.150, burjui (ok), 22:19, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То есть, ты сейчас подтвердил, что 90 комментаторов про Rust - ненормальные, по... текст свёрнут, показать
     
     
  • 10.151, Вы забыли заполнить поле Name (?), 22:32, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я же говорю у тебя мусор в голове Ты видишь, что хочешь видеть ... текст свёрнут, показать
     
     
  • 11.154, burjui (ok), 23:44, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ты вообще много говоришь Иди код пиши лучше, балабол ... текст свёрнут, показать
     
     
  • 12.156, Вы забыли заполнить поле Name (?), 01:16, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Этот растаман порвался, несите следующего... текст свёрнут, показать
     

     ....большая нить свёрнута, показать (39)

  • 1.6, Аноним (6), 12:18, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Нужен новый shell, безопасная работа с памятью которого обеспечивается во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
     
     
  • 2.7, Анонус (?), 12:22, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Нужен новый shell, безопасная работа с памятью которого обеспечивается во время компиляции
    > через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов
    > (области видимости), а также через оценку корректности доступа к памяти во
    > время выполнения кода. Также предоставляет средства для защиты от целочисленных переполнений,
    > требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает
    > ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок
    > и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических
    > ошибок.

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

     
     
  • 3.10, Аноним (10), 12:37, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Идеальный вариант!
    Самый быстрый некогда интерпретатор. Достаточно пластичный и мощный язык.
    На фоне баша, ему можно простить даже кривость инопланетного синтаксиса.

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

     
     
  • 4.14, Аноним (14), 12:39, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Язык хороший, но в качестве замены шелла не взлетит. Замена шеллу - это перл. Нравится вам это или нет. И это уже 30 лет так.
     
     
  • 5.16, Аноним (10), 12:41, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Есть ли у перла варианты типа Xonsh?
    Perl конечно... так себе замена то. Вот это видеть ГА;) К*Г)*а4гн8кн82 вместо [[ $RE -gt 2 ]]
     
  • 4.15, Аноним (10), 12:40, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кривой баш, в любом случае, давно уже требует замены. Привыклю корячиться буквой зю, и ничего не меняется. Школьники уже даже умудряются боготворить его идеальность.
     
     
  • 5.22, Аноним (22), 12:47, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Баш ужасен, и с этим не поспоришь, но позикс шелл с bsd-шными coreutils ещё хуже — там потенциал выстрелить себе в ногу на два порядка выше
     
     
  • 6.24, Аноним (10), 12:54, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Суть в том, что баш это очень кривая подпорка, на сегодняшний день.
    Люди делают его замены, меньшей кровью. Успешно. Оболочка ZSH недалеко ушла, но куда удобней.
    Fish ушел еще дальше и боли меньше. Но концептуально, на претендента замены подходят лишь IPython и  Xonsh.
    Т.е. люди это осознают давно уже и даже есть вариант - пайтон в основе.
    Интересно, пробовал ли кто-то луа.. люди на реддите очень хотят луа на этом месте видеть. И даже есть интересные варианты использования. Но по существу, воз и ныне там.
     
     
  • 7.27, Аноним (22), 13:08, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Проблема в том, что эта подпорка есть везде. Может быть когда-нибудь, лет эдак через -цать, когда питон станет главной зависимостью во всех линуксах, люди начнут перебираться на шелл на основе него, а пока — скрипты для пакетов будут писаться на sh с пригоршней башизмов, клей в Dockerfile будет писаться на sh с привкусом смузи и томатного гозе и весь мир будет прилаживать костыли и подпорки к получившейся хтони
     
     
  • 8.59, Аноним (-), 15:06, 27/12/2022 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 9.120, Вы забыли заполнить поле Name (?), 03:36, 28/12/2022 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 8.138, Аноним (-), 17:32, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Данунафиг, антипод юниксвэя Делает что угодно и одинаково фигово Ведет к тому ... текст свёрнут, показать
     
  • 2.19, Аноним (19), 12:43, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Power Shell.
     
     
  • 3.31, амоним (?), 13:22, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    вот кстати, отличное решение. есть команды - согласен. и вывод, в json есть. который всегда можно распарсить, не непонятными регулярными выражениями, которые разваливаются на ходу, а нормальным json парсером, получить те данные которые нужно и проч.
    единственная проблема - родные системные утилиты не дают выхлоп в таком формате.
    а башем, парсить строковый вывод - это про времена, когда всю ось мог написать один Линус. а сегодня - это про мазохизм.
     
     
  • 4.39, Аноним (39), 13:57, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +6 +/
    пожалуйста, изложите свои мысли в виде json-а а то вас трудно парсить
     
  • 2.21, Жироватт (ok), 12:47, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нужен новый шелл-ланг, который как %хайповый_язычок%, но другой.
    Под новый шелл-ланг нужен новый интерпретатор, мегабайт на сто, как МощныйРакушка.
    Под новый интерпретатор нужно новое системное окружение, где он *сможет_раскрыть_потенциал*.
    Под новое окружение нужны новые принципы создания аварийных и удаленных оболочек, чтобы юзер не умер в чистом sh.
    ...
     
     
  • 3.103, GUIX (?), 19:40, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Про Scheme уже было?
     
     
  • 4.139, Ноня (?), 18:58, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В удалённых.
     
  • 2.29, Аноним (26), 13:14, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какая ещё компиляция при скриптовании?
     
     
  • 3.38, Ноня (?), 13:57, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    sbcl когда-нибудь видел? вот это оно
     
  • 2.93, Аноним (93), 18:54, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.oilshell.org/
    https://www.nushell.sh/
     
     
  • 3.115, Аноним (39), 23:22, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    лучше уж es-shell воскресить
    https://wryun.github.io/es-shell/
     

  • 1.12, Аноним (14), 12:38, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Попытки из шелла и скриптовых языков делать что-то квазитипизированное - это клиника.
    На шелле не надо программировать. Он не для этого. В юникс даже не обязательно писать на скриптовых языках. Вас никто не заставляет использовать инструменты, с мощью которых вы не можете справиться.
     
     
  • 2.25, Аноним (22), 13:02, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Если шелл не для того чтобы программировать, то почему в System V на нём писали программы?
     
     
  • 3.30, Аноним (26), 13:17, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Сам SysVinit на Сишке. А на bash там писали и пишут скрипты.
     
     
  • 4.36, Аноним (22), 13:50, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я не готоврю про sysVinit. Я говорю про AT&T UNIX System V. diff3, spell, basename, uuto, dirname, man, install и многие другие команды написаны на shell.
     
     
  • 5.41, ПАНК программист а не кодер (?), 14:06, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так и деды и в лаптях на телеге когда-то ездили, и что?
     
  • 5.51, Аноним (39), 14:55, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >diff3, spell, basename, uuto, dirname, man, install и многие другие команды написаны на shell.

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

     
     
  • 6.66, Аноним (-), 15:47, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В этом юниксвэй и состоит: объединять быстрые эффективные кирпичики вон тем координатором через пайпы. А то что народ из инструмента для glue-логики зачем-то временами чуть не мегаприложухи пытается, так что сабж требоваться начинает - бывает и такое, конечно.
     
     
  • 7.71, Ноня (?), 16:18, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >А то что народ из инструмента для glue-логики зачем-то временами чуть не мегаприложухи пытается

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

     
     
  • 8.99, Аноним (-), 19:10, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, а у другого тут выходит видео блендером редактировать Можете попробовать... текст свёрнут, показать
     
     
  • 9.140, Ноня (?), 19:01, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Когда это блендер и автокад стали универсальными инструментами навроде шелла ... текст свёрнут, показать
     
     
  • 10.155, Аноним (-), 23:57, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы не стал настаивать что он вот именно универсальный Конкретный пример нап... текст свёрнут, показать
     
     
  • 11.181, Ноня (?), 22:42, 01/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Какой есть, универсальней особо нет Язычок для управления программ, внезапно на... текст свёрнут, показать
     
  • 6.91, Аноним (22), 18:10, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не в System V. Значит всё же он изначально и задумывался для программирования утилит
     
  • 2.44, Ноня (?), 14:16, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Только в том случае, если накладывание типов не тащит за собой контракты тут мо... большой текст свёрнут, показать
     
     
  • 3.45, ПАНК программист а не кодер (?), 14:36, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Всё-то, может, и по делу, и верно, но только суть баша от этого не меняются: встратый синтаксис, несколько слоёв expansion-ов, shopt-магия и так далее. Баш, может быть, мощный инструмент, хороший инструмент, но точно не удобный или современный инструмент, о чём тут спорить вообще.
     
     
  • 4.69, Аноним (-), 16:14, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >синтаксис

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

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

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

    >не удобный

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

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

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

     
     
  • 5.162, Прохожий (??), 09:43, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Годный синтаксис у обычного шелла

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

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

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

     
     
  • 6.171, Аноним (171), 23:02, 30/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Хорошего здесь то что с таким синтаксисом ты можешь делать присвоение прямо в команде:
    foo=123 proga

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

     

  • 1.13, commiethebeastie (ok), 12:39, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Line 1:
    rm -rf /usr /bumblebee
           ^-- SC2114 (warning): Warning: deletes a system directory.
     
     
  • 2.52, Аноним (-), 14:55, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, как видишь, работает. Не на...ли :)
     
     
  • 3.64, commiethebeastie (ok), 15:44, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Действительно работает, если убрать пробел, то ложного срабатывания не будет.
     

  • 1.23, Аноним (23), 12:48, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Настоящими программистам все эти проверки не нужны, они нужны только всяким там, которые даже язык не знают на котором пишут
     
     
  • 2.42, burjui (ok), 14:06, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Есть одна проблема с вашим определением термина "настоящий программист": таких не существует. Нет и не было за всю историю человечества ни одного индивида, который бы не совершал ошибок. Конечно, если это мелкий одноразовый скрипт для не слишком важной ерудны, то цена ошибки настолько мала, что можно обойтись и без статического анализатора. Но если он уже есть, не пользоваться им - безумие.
     
  • 2.49, Ноня (?), 14:45, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так там одна часть в рекламке шеллчека так и гласит: ищут ошибки новичков, и шоб никаких криптик мессаджес!
     

  • 1.50, Аноним (-), 14:55, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > статического анализа shell-скриптов

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

     
     
  • 2.133, Аноним (133), 15:18, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    согласен. ошибки нужно искать не в коде, а в ДНК
     

  • 1.60, Аноним (60), 15:08, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У баша какие-то проблемы с совместимостью. Несколько лет всё прекрасно работало, а тут он в 5.2 фейлится на ?() в $() и надо теперь вместо $() использовать обратные кавычки. При этом, в синтетическом коде это не проявляется и надо было догадаться, где проблема.
     
     
  • 2.124, Аноним (123), 09:26, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Покажи код, аноним. Баш не должен фейлиться на $() никогда.
     
     
  • 3.132, Аноним (60), 14:39, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да, я тоже думал проблема может быть в другом месте, но она именно тут (похоже, дело именно во вложенной ?(), но если с ней что-нибудь сделать, 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 проблем с файлами. Этот скрипт генерирует страничку для веббраузера, и в один прекрасный день он просто перестал это делать(

     
     
  • 4.163, швондер (?), 12:02, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален У меня ваш код работает ожидаемо в GNU bash, версия 5 1 ... большой текст свёрнут, показать
     
     
  • 5.164, Аноним (60), 12:31, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, баш в генте 5.2 в тестовой ветке, не замаскирован. Я уже говорил, что в синтетическом примере не проявляется, поэтому нет смысла. Это была копия проблемного кода и я отдельно убедился, что дело именно в нём. Баш вообще не пытается исполнить этот файл, поэтому переменные никакого значения не имеют.
     
     
  • 6.173, швондер (?), 17:27, 31/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет, баш в генте 5.2 в тестовой ветке, не замаскирован. Я уже
    > говорил, что в синтетическом примере не проявляется, поэтому нет смысла. Это
    > была копия проблемного кода и я отдельно убедился, что дело именно
    > в нём. Баш вообще не пытается исполнить этот файл, поэтому переменные
    > никакого значения не имеют.

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

     
  • 5.165, Аноним (60), 12:35, 29/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати local pext='@(*.mkv|*.mp4|*.avi)' поэтому да, extglob.
     
     
  • 6.172, швондер (?), 17:23, 31/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    так у вас какая именно ошибка? Вижу две в вашем сообщении
    1. некорректный синтаксис line 90  -это очень похоже на отключенный extglob
    2. файл не находится
    Если 2 это следствие №1, то это одна ситуация. Если №2 на одном и том же наборе файлов и минимальном пруфе работает по разному на разных версиях баша  - это надо репортить.
    Давайте запилим минимальный пруфик бага?
     
     
  • 7.174, Аноним (60), 21:11, 31/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Файл находится в 5 1 и не находится в 5 2 И при чём тут файл, если баш не пытае... большой текст свёрнут, показать
     
     
  • 8.175, швондер (?), 12:23, 01/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален вы не поверите, но этот код зависит от файлов, которые н... большой текст свёрнут, показать
     
     
  • 9.176, Аноним (60), 13:14, 01/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Этот код ни от чего не зависит, если он не интерпретируется Не понимаю, что тон... текст свёрнут, показать
     
     
  • 10.177, швондер (?), 14:49, 01/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    пруф должен выглядеть так mkdir test cd test mkdir dir touch dir имена_файлов_... большой текст свёрнут, показать
     
     
  • 11.178, Аноним (60), 15:19, 01/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем мне это Я накатил старые версии интерпретатора, которые есть в репах, и у... текст свёрнут, показать
     
     
  • 12.179, швондер (?), 18:29, 01/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален так у вас разные скрипты вызываются ... текст свёрнут, показать
     
     
  • 13.180, Аноним (60), 18:36, 01/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, это один файл Я же написал, как повторить когда я пытался воспроизвести н... текст свёрнут, показать
     

     ....большая нить свёрнута, показать (14)

  • 1.72, Аноним (72), 16:18, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Они не могли придумать более оригинального названия? И как мне гуглить это и искать в репах?
     
     
  • 2.79, Аноним (-), 16:52, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    От названия прямо-таки пахнет тем, что эти ребятки юниксом никогда не проникались. Ещё для бинго можно было бы домен .io зарегать.
     
  • 2.127, onanim (?), 11:01, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    $ 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

     

  • 1.83, Самый умный из вас (?), 17:20, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Если человек в своём профиле пишет, что ему нравится кодить на sh, к нему стоит присмотреться
     
     
  • 2.86, 1 (??), 17:36, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    психиатрам
     
     
  • 3.113, Самый умный из вас (?), 23:16, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Или девушкам, как к завидному жениху и уверенному в себе мужчине? 🤔
     
  • 3.114, Аноним (-), 23:17, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вот это и скажешь человеку, умеющему кодить на шелле, когда в очередной раз в слезах к нему обратишься с тем, что ты куда-то нажала и оно перестало запускаться, хорошо, дорогуша?
     

  • 1.88, Xasd8 (?), 17:37, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > а использование "echo {1..10}" будет выделено как несовместимое с dash и sh.

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

     
     
  • 2.92, Аноним (22), 18:26, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Меинтейнерам пакетов Debian
     
  • 2.95, warlock66613 (ok), 18:55, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тому кто хочет чтобы его скрипт можно было запустить? На нормальной системе, где нет места bash я имею в виду.
     
     
  • 3.141, Аноним (141), 19:16, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Такие системы называются легаси их всё меньше и меньше. Сегодня, если на операционной системе общего назначения не существует баша, это показатель её непригодности к промышленному использованию. Практика деплоев тому доказательством.
     

  • 1.89, Мононим (?), 18:09, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Не хватает только канпелятора.
     
     
  • 2.90, Мононим (?), 18:10, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А, да, ещё объект-ориентированности, статической типизации и обязательно всё на хрусте.
     

  • 1.94, warlock66613 (ok), 18:54, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Штука отличная.
     
  • 1.101, Kirikekeks (ok), 19:33, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Много лет выпущенная гуглем Salt bash записки на пипифаксе для меня прям настольный пипифакс. А анализатор, это хорошо, особенно когда свой забытый скрипт надо переделать. Тем более что спросить про bash стеснительно, как пёрнуть в обществе, а очень напрасно. Не любо не слушай, а врать не мешай. Я помню несколько ситуаций, когда высоколобые многомудрые девы реально готовы были потратить нехилые деньги на проблемы решаемые однострочником на баш. Да и гугловое руководство тоже похоже на "к вящему сожалению совсем без bash не получится, но хотябы делайте так, а?"
     
     
  • 2.104, Карабьян (?), 19:41, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какой области девы? По специализации
     

  • 1.107, EuPhobos (ok), 21:17, 27/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Совет на скриншоте: "используйте bc или awk" просто "гениальный"..
    "Не используйте встроенные фишки в интерпретаторе, лучше создайте ещё один процесс через конвейер и посчитайте в нём" - что за бред?
     
     
  • 2.111, Аноним (39), 23:05, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    какие еще встроенные фишки для дробных чисел, ты о чем ?

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

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

     
  • 2.112, Аноним (112), 23:06, 27/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    на том же скриншоте написано, что шелл не умеет работать с дробями (а ash, dash, bash вроде как не умеют
     
  • 2.121, EuPhobos (ok), 08:32, 28/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да, что-то я дроби не увидел сразу, подумал чекер даёт совет считать всегда в сторонних программах.
     

  • 1.128, onanim (?), 11:03, 28/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    не знал о существовании этой тулзы, спасибо!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру