Почему Linux не разрешает `cat`ing директории? [дубликат]

(( не является словом. В отличие от [ и [[], оно не входит в список слов, составляющих команда. Лучше всего думать об этом как о знаке препинания. На самом деле это два знака пунктуации, которые могут или не могут быть объединены в один токен в зависимости от контекста. Это похоже на такие вещи, как >& и || в этом отношении. Знаки препинания обрабатываются специальным образом лексером/парсером оболочки.

(( — половина оператора, другая половина — )).Вместе они составляют оператор арифметического выражения, который имеет синтаксис «outfix».Грамматическая структура языков оболочки, таких как bash, не очень четко следует синтаксису традиционного языка программирования (например, есть очень сильные связи между лексическим анализом и грамматическим анализом, потому что знаки препинания имеют значение, которое зависит от грамматического контекста), так что не всегда есть точно подогнанные г слова.

type может дать вам информацию только о словах, которые могут встречаться в простых командах, и о ключевых словах, а не о том, как работает лексер/парсер оболочки.

1
30.03.2016, 18:22
0 ответов

Теги

Похожие вопросы