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").  Особым значением 
наделено то, что внутри _пары_ квадратных скобок внутри одного слова.  Так что 
никакого исключения тут предусматривать не надо.

>  Да, в случае одиночного [ глоббинг не случится, потому что такой шаблон 
> синтаксически неправилен

Это насколько же «неправильный шаблон», насколько и, скажем, «ls».

>  но вместо того, чтобы выдать сообщение об ошибке в шаблоне, … шелл пойдёт 
> искать бинарий по PATH.

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

        $ shopt -s failglob
        $ echo [a-z]
        bash: no match: [a-z]
        $ echo [
        [

Attachment: signature.asc
Description: PGP signature

Ответить