शैल सिंटैक्स उपसर्ग आधारित है। इसमें विशेष कीवर्ड द्वारा पेश किए गए खंड हैं। कुछ खंडों को एक साथ जाना है।
एक while
लूप को एक या अधिक परीक्षण कमांड से बनाया जाता है:
test ; test ; test ; ...
और एक या अधिक बॉडी कमांड द्वारा:
body ; body ; body ; ...
कुछ को शेल को बताना पड़ता है कि थोड़ी देर से लूप शुरू होता है। यह while
शब्द का उद्देश्य है :
while test ; test ; test ; ...
लेकिन फिर, चीजें अस्पष्ट हैं। शरीर का प्रारंभ किस आज्ञा से होता है? कुछ को इंगित करना है, और यही do
उपसर्ग करता है:
do body ; body ; body ; ...
, और अंत में, कुछ को यह इंगित करना होगा कि अंतिम शरीर को देखा गया है; एक विशेष कीवर्ड done
ऐसा करता है।
इन शेल कीवर्ड को अर्धविराम अलगाव की आवश्यकता नहीं है, यहां तक कि एक ही पंक्ति पर भी। उदाहरण के लिए, यदि आप कई नेस्टेड लूप बंद करते हैं, तो आपके पास बस हो सकता है done done done ...
।
इसके बजाय, अर्धविराम ... test ; body ...
यदि वे एक ही पंक्ति में हैं। उस अर्धविराम को एक टर्मिनेटर के रूप में समझा जाता है: यह इसके साथ संबंध रखता है test
। इसलिए, यदि do
उनके बीच कोई कीवर्ड डाला जाता है, तो उसे अर्धविराम और के बीच जाना होगा body
। यदि यह अर्धविराम के दूसरी तरफ था, तो इसे test
कमांड के सिंटैक्स के अंदर गलत तरीके से एम्बेड किया जाएगा , न कि कमांड के बीच रखा जाएगा।
शेल सिंटैक्स मूल रूप से स्टीफन बॉर्न द्वारा डिजाइन किया गया था, और अल्गोल से प्रेरित है । बॉर्न, अल्गोल से इतना प्यार करता था कि उसने शेल स्रोत कोड में सी मैक्रोज़ का बहुत इस्तेमाल किया ताकि सी को अल्गोल की तरह बनाया जा सके। आप संस्करण 7 यूनिक्स से 1979-दिनांकित शेल स्रोतों को ब्राउज़ कर सकते हैं । मैक्रोज़ अंदर हैं mac.h
, और उनका उपयोग सभी जगह किया जाता है। के लिए उदाहरण के if
बयान के रूप में प्रदान कर रहे हैं IF
... ELSE
... ELIF
... FI
।