grupy poleceń bash: Dlaczego nawiasy klamrowe wymagają średnika?
Znam różnicę w celu między nawiasami()
i nawiasy klamrowe{}
kiedy polecenia grupujące w bash.
Ale dlaczego konstrukcja nawiasów klamrowych wymaga średnika po ostatniej komendzie, podczas gdy dla konstrukcji w nawiasach średnik jest opcjonalny?
$ 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' $
Szukam wglądu, dlaczego tak jest. Nie szukam odpowiedzi takich jak ”, ponieważ dokumentacja tak mówi„ lub „ponieważ został tak zaprojektowany”. Chciałbym wiedziećczem zostało zaprojektowane w ten sposób. A może to tylko historyczny artefakt?
Można to zaobserwować w co najmniej następujących wersjachgrzmotną:
GNU bash, wersja 3.00.15 (1) -release (x86_64-redhat-linux-gnu)GNU bash, wersja 3.2.48 (1) -release (x86_64-apple-darwin12)GNU bash, wersja 4.2.25 (1) -release (x86_64-pc-linux-gnu)