در درس قبل، چگونگی ایجاد متغیرها و انجام بسط با آنها را آموختیم. در این درس، این ایده را برای نشان دادن آن که چطور میتوانیم نتایج یک فرمان را جایگزین نماییم، گسترش خواهیم داد.
موقعی که آخرین بار اسکریپتمان را ترک کردیم، میتوانست یک صفحه HTML تولید کند که شامل چند سطر متنِ ساده، به انضمام نام ماشینی باشد که ما از متغیر محیط HOSTNAME به دست آوردیم. اکنون، برای نشان دادن آخرین زمانی که به روزرسانی شده همراه با نام کاربری که آن را انجام داده، یک نشانه زمان به صفحه اضافه خواهیم نمود.
#!/bin/bash # sysinfo_page - HTML اسکریپتی برای تولید یک فایل title="System Information for" cat <<- _EOF_ <html> <head> <title> $title $HOSTNAME </title> </head> <body> <h1>$title $HOSTNAME</h1> <p>Updated on $(date +"%x %r %Z") by $USER</p> </body> </html> _EOF_
همچنانکه میتوانید مشاهده نمایید، یک متغیر محیط دیگر، USER، را برای بدست آوردن نام کاربر استفاده کردیم. بعلاوه، مورد زیر با قیافه ناشناس را به کار بردیم:
$(date +"%x %r %Z")
کاراکترهای "
[me@linuxbox me]$ date --help | less
آگاه باشید که یک ترکیب جایگزین قدیمیتر برای "
$(command) `command`
شما همچنین میتوانید نتایج یک فرمان را به یک متغیر تخصیص بدهید:
right_now=$(date +"%x %r %Z")
حتی میتوانید متغیرها را تو در تو نمایید (قرار دادن یکی در داخل دیگری)، مانند این:
right_now=$(date +"%x %r %Z") time_stamp="Updated on $right_now by $USER"
همچنانکه نام متغیر اشاره میکند، محتوای یک متغیر تابع تغییر است. این به معنای آن است که انتظار میرود در خلال اجرای اسکریپت شما، شاید بواسطه موردی که شما انجام میدهید محتوایش ویرایش گردیده باشد.
از طرف دیگر، ممکن است مقادیری وجود داشته باشند که یکبار تنظیم شوند، و هرگز نباید تغییر کنند. اینها ثابتها نامیده میشوند. من این را در اینجا میآورم زیرا یک مفهوم رایج در برنامهنویسی است. اکثر زبانهای برنامهنویسی دارای امکانات خاصی برای پشتیبانی از کمیتهایی هستند که تغییر آنها اجازه داده نمیشود. Bash نیز دارای این امکانات هست، اما صادقانه، من هرگز استفاده آن را ندیدم. در عوض، اگر یک کمیت نامزد ثابت بودن باشد، یک نام با حروف بزرگ به آن داده میشود برای اینکه به برنامه نویس یادآوری گردد که آن کمیت باید یک ثابت در نظر گرفته شود، حتی اگر مجبور به آن نشود.
متغیرهای محیط به طور معمول ثابت در نظر گرفته میشوند چون آنها به ندرت تغییر داده میشوند. همانند ثابتها، به متغیرهای محیط مطابق قرارداد نامهای با حروف بزرگ داده میشود. در اسکریپتهای پس از این، من این قرارداد را به کار خواهم برد - نامهای با حروف بزرگ برای ثابتها و حروف کوچک برای متغیرها.
بنابراین با آنچه ما میدانیم، برنامه ما اینطور ظاهر میگردد:
#!/bin/bash # sysinfo_page - HTML اسکریپتی برای تولید یک فایل title="System Information for $HOSTNAME" RIGHT_NOW=$(date +"%x %r %Z") TIME_STAMP="Updated on $RIGHT_NOW by $USER" cat <<- _EOF_ <html> <head> <title> $title </title> </head> <body> <h1>$title</h1> <p>$TIME_STAMP</p> </body> </html> _EOF_