On Sun, Sep 29, 2019 at 08:19:53PM +0300, Dmitry Alexandrov wrote: > Eugene Berdnikov <b...@protva.ru> wrote: > > On Sun, Sep 29, 2019 at 01:18:01AM +0300, Dmitry Alexandrov wrote: > >> Eugene Berdnikov <b...@protva.ru> wrote: > >>> Синтаксически символ [ не является alphanumeric, поэтому он является не > >>> нормальным именем команды, а нелепым исключением. > >> > >> Почему? Тут вам не Винда, из запретных для файловых имен символов — > >> кажется, только нулевой. > > > > Потому что символ [ ещё является одним из спецсимволов для file globbing, > > Таки нет, сверьтесь с (info "(bash) Pattern Matching"). Особым значением > наделено то, что внутри _пары_ квадратных скобок внутри одного слова. Так > что никакого исключения тут предусматривать не надо.
И юзер всё это должен держать в голове? А также то, что [ может быть именем файла, который баш был бы готов запустить (если бы не одноимённый builtin), а вот с { и ( это уже не так. Лёгкий вынос мозга... Гораздо легче было бы считать, что [] {} () это строго парные синтаксические разделители. Тем более что команда [ ну очень хочет получить последним аргументом ]. Не надо убеждать меня в том, что алгоритм обработки параметров в баше непротиворечив. Я говорю о том, что контринтуитивен для тех, кто вырос в нашей сложившейся среде и культуре программирования. -- Eugene Berdnikov