Я знаю разницу в назначении между круглыми скобками ()
и фигурными скобками {}
, когда группирует команды в bash.
Но почему для фигурной фигурной скобки требуется точка с запятой после последней команды, тогда как для конструкции круглых скобок точка с запятой необязательна?
$ while false; do ( echo "Hello"; echo "Goodbye"; ); done $ while false; do ( echo "Hello"; echo "Goodbye" ); done $ while false; do { echo "Hello"; echo "Goodbye"; }; done $ while false; do { echo "Hello"; echo "Goodbye" }; done bash: syntax error near unexpected token `done' $
Я ищу некоторое представление о том, почему это так. Я не ищу ответы, например, "потому что документация говорит так" или "потому что она была разработана именно так". Я хотел бы знать , почему он был разработан таким образом. Или, может быть, если это просто исторический артефакт?
Это может наблюдаться, по крайней мере, в следующих версиях bash:
- GNU bash, версия 3.00.15 (1) -release (x86_64-redhat-linux-gnu)
- GNU bash, версия 3.2.48 (1) -release (x86_64-apple-darwin12)
- GNU bash, версия 4.2.25 (1) -release (x86_64-pc-linux-gnu)