با شروع این درس، ما یک برنامه کاربردی سودمند را طرحریزی خواهیم نمود. این برنامه کاربردی یک سند HTML را تولید خواهد نمود که محتوی اطلاعاتی در باره سیستم شما است. من زمان زیادی برای اندیشیدن در باره چگونگی آموزش برنامهنویسی شل صرف نمودم، و راهکاری که من انتخاب کردهام بسیار متفاوت با اکثر آنهای دیگری است که من دیدهام. اکثرا برخورد سیستماتیک با ویژگیهای پوسته را ترجیح میدهند و اغلب وجود تجربیاتی از سایر زبانهای برنامهنویسی را مسلم فرض میکنند. با وجود آنکه من فرض نمیکنم شما از قبل میدانید که چطور برنامه بنویسید، تصدیق میکنم که امروزه بسیاری اشخاص میدانند چگونه HTML بنویسند، بنابراین برنامه ما یک صفحه web تولید خواهد نمود. همچنانکه ما اسکریپتمان را طرحریزی میکنیم، قدم به قدم ابزارهای مورد نیاز برای حل مشکل پیش روی خود را مکشوف خواهیم ساخت.
همچنانکه شاید بدانید، یک فایل HTML خوش ساخت شامل محتویات زیر است:
<html> <head> <title> عنوان صفحه شما </title> </head> <body> .محتویات صفحه شما در اینجا قرار میگیرد </body> </html>
اکنون، با آنچه از قبل میدانیم، میتوانیم اسکریپتی برای تولید محتوای فوق بنویسیم:
#!/bin/bash # sysinfo_page - html اسکریپتی برای تولید یک فایل echo "<html>" echo "<head>" echo " <title>" echo " عنوان صفحه شما" echo " </title>" echo "</head>" echo "" echo "<body>" echo " .محتویات صفحه شما در اینجا قرار میگیرد" echo "</body>" echo "</html>"
این اسکریپت به صورت زیر میتواند به کار برود:
[me@linuxbox me]$ sysinfo_page > sysinfo_page.html
گفته شده است که بزرگترین برنامهنویسان تنبلترین نیز هستند. آنها برنامههایی برای صرفهجویی در کارشان مینویسند. همچنین، موقعی که برنامهنویسان باهوش برنامهها را مینویسند، سعی میکنند در تایپ کردنشان صرفهجویی کنند.
اولین بهبود برای این اسکریپت، تعویض کاربرد تکراری فرمان echo با یک نمونه منفرد به وسیله استفاده با کفایتترِ نقلقول خواهد بود:
#!/bin/bash # sysinfo_page - html اسکریپتی برای تولید یک فایل echo "<html> <head> <title> عنوان صفحه شما </title> </head> <body> .محتویات صفحه شما در اینجا قرار میگیرد </body> </html>"
با کاربرد نقلقول، تعبیه تعویض سطر در متن ما و داشتن شناسه فرمان echo به صورت گسترده در چند سطر میسر میگردد.
در حالیکه این مورد به طور یقین یک بهبود است، دارای یک محدودیت نیز هست. چون بسیاری از انواع نشانهگذاری به کار رفته در html خودشان در علامتهای نقلقول به هم پیوسته میشوند، کاربرد یک رشته نقلقول شده را کمی بد قواره میسازد. یک رشته نقلقولی میتواند به کار برود اما لازم خواهد بود هر علامت نقلقول به کار رفته، با کاراکتر
به منظور پرهیز از تایپ اضافی، نیازمند جستجوی یک روش مناسبتر برای تولید متن خود هستیم. خوشبختانه، پوسته یک مورد را فراهم میکند. این مورد
#!/bin/bash # sysinfo_page - HTML اسکریپتی برای تولید یک فایل cat << _EOF_ <html> <head> <title> عنوان صفحه شما </title> </head> <body> .محتویات صفحه شما در اینجا قرار میگیرد </body> </html> _EOF_
یک here script (همچنین گاهی اوقات
یکhere script به این شکل ایجاد میگردد:
command <<token محتویاتی که به عنوان ورودی استاندارد فرمان استفاده میشودtoken
یک شگرد اضافی وجود دارد که میتواند با here script به کار برود. بیشتر اوقات شما برای بهبود بخشی به خوانایی اسکریپت خود، به دندانهدار کردن قسمت محتوی here script نیاز خواهید داشت. در صورتیکه اسکریپت را به صورت زیر تغییر بدهید میتوانید آن را انجام بدهید:
#!/bin/bash # sysinfo_page - HTML اسکریپتی برای تولید یک فایل cat <<- _EOF_ <html> <head> <title> عنوان صفحه شما </title> </head> <body> .محتویات صفحه شما در اینجا قرار میگیرد </body> </html> _EOF_
تعویض "
بسیار خوب، بیایید صفحه خود را بسازیم. ما صفحهمان را برای اینکه مطلبی را بیان کند ویرایش میکنیم:
#!/bin/bash # sysinfo_page - HTML اسکریپتی برای تولید یک فایل cat <<- _EOF_ <html> <head> <title> My System Information </title> </head> <body> <h1>My System Information</h1> </body> </html> _EOF_
در درس بعدی، اسکریپت خود را برای تولید اطلاعات واقعی در باره سیستم آماده خواهیم نمود.