Я не могу перекомпилировать программу выбора -в Fedora 34

{...; } уже был принят вместо do...; doneв циклах forв первой версии оболочки Bourne в Unix V7 в конце 70-х (см. исходный код ), хотя никогда не документировался до сих пор насколько я знаю.

Всеksh(как исходные, полученные из оболочки Борна, так и переписанные ksh93 ), pdksh¹ (и производные ),bash(с самого начала в 1989 г. )и zshподдерживают его. Я не знаю ни одной ashпроизводной, которая это делает. yashтоже нет, но yashбыл написан в соответствии со стандартом POSIX.

В zshподдержка была добавлена ​​в версии 2.0 в 1991 году, но как часть нового диапазона кратких форм для большинства конструкций, выходящих за рамки синтаксиса Борна. Это не только for i in 1 2; {...; }, этоfor i in 1 2; any-command(и его варианты ). И это задокументировано там и было с момента его введения .

AFAIK, помимо zsh, только pdksh документирует это (как для for, так и дляselect).

Что касается формы ((init; condition; action)), которая происходит от ksh93и была скопирована zshи bash.

Ни ((...)), ни {...; }вместо do...; doneне являются POSIX.

См. также Каково назначение ключевого слова do в циклах for в Bash? для получения дополнительных forформ цикла.


¹ ни более ранние версии, ни оболочка Forsyth, на которой она основана. Он был добавлен в 5.1.1 в 1994 году, и это, вероятно, объясняет, почему он был там задокументирован

.

-1
02.10.2021, 19:45
0 ответов

Теги

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