Cú pháp Shell là tiền tố dựa. Nó có các mệnh đề được giới thiệu bởi các từ khóa đặc biệt. Một số mệnh đề phải đi cùng nhau.
Một while
vòng lặp được tạo ra một hoặc nhiều lệnh kiểm tra:
test ; test ; test ; ...
và bằng một hoặc nhiều lệnh cơ thể:
body ; body ; body ; ...
Một cái gì đó phải nói với shell rằng một vòng lặp while bắt đầu. Đó là mục đích của while
từ này:
while test ; test ; test ; ...
Nhưng sau đó, mọi thứ mơ hồ. Lệnh nào là bắt đầu của cơ thể? Một cái gì đó phải chỉ ra điều đó, và đó là những gì do
tiền tố làm:
do body ; body ; body ; ...
và cuối cùng, một cái gì đó phải chỉ ra rằng cơ thể cuối cùng đã được nhìn thấy; một từ khóa đặc biệt done
làm điều đó.
Các từ khóa shell này không yêu cầu phân tách dấu chấm phẩy, ngay cả trên cùng một dòng. Ví dụ, nếu bạn đóng một số vòng lặp lồng nhau, bạn có thể có done done done ...
.
Thay vào đó, dấu chấm phẩy nằm giữa ... test ; body ...
nếu chúng nằm trên cùng một dòng. Dấu chấm phẩy đó được hiểu là một dấu chấm hết: nó thuộc về test
. Do đó, nếu một do
từ khóa được chèn giữa chúng, nó phải đi giữa dấu chấm phẩy và body
. Nếu nó ở phía bên kia của dấu chấm phẩy, nó sẽ bị nhúng sai vào bên trongtest
cú pháp của lệnh, thay vì được đặt giữa các lệnh.
Cú pháp shell ban đầu được thiết kế bởi Stephen Bourne và được lấy cảm hứng từ Algol . Bourne yêu Algol đến nỗi anh ta đã sử dụng rất nhiều macro C trong mã nguồn shell để làm cho C trông giống Algol. Bạn có thể duyệt các nguồn shell có từ năm 1979 từ Phiên bản Unix 7 . Các macro đang ở mac.h
và chúng được sử dụng ở mọi nơi. Ví dụ if
báo cáo được trả lại như IF
... ELSE
... ELIF
... FI
.