Składnia powłoki jest oparta na prefiksie. Ma klauzule wprowadzone przez specjalne słowa kluczowe. Niektóre klauzule muszą iść w parze.
while
Pętla składa się jednego lub więcej testów polecenia:
test ; test ; test ; ...
i przez jedno lub więcej poleceń ciała:
body ; body ; body ; ...
Coś musi powiedzieć powłoce, że zaczyna się pętla while. Taki jest cel tego while
słowa:
while test ; test ; test ; ...
Ale rzeczy są niejednoznaczne. Które polecenie jest początkiem ciała? Coś musi to wskazywać i właśnie to do
robi przedrostek:
do body ; body ; body ; ...
i wreszcie coś musi wskazywać, że widziało ostatnie ciało; done
robi to specjalne słowo kluczowe .
Te słowa kluczowe powłoki nie wymagają separacji średnikami, nawet w tym samym wierszu. Na przykład, jeśli zamkniesz kilka zagnieżdżonych pętli, możesz po prostu mieć done done done ...
.
Średnik jest raczej pomiędzy, ... test ; body ...
jeśli są w tej samej linii. Ten średnik jest rozumiany jako terminator: należy do niego test
. Dlatego, jeśli do
słowo kluczowe zostanie wstawione między nimi, musi przechodzić między średnikiem a body
. Gdyby znajdował się po drugiej stronie średnika, byłby niepoprawnie osadzony test
w składni polecenia, a nie umieszczony między poleceniami.
Składnia powłoki została pierwotnie zaprojektowana przez Stephena Bourne'a i jest inspirowana przez Algola . Bourne tak bardzo kochał Algol, że używał wielu makr C w kodzie źródłowym powłoki, aby C wyglądał jak Algol. Możesz przeglądać źródła powłoki datowane na 1979 rok z wersji 7 Unix . Makra są włączone mac.h
i są używane wszędzie. Na przykład if
oświadczenia są renderowane jako IF
... ELSE
... ELIF
... FI
.