کاراکترهای خاص
تعدادی کاراکتر ویژه، که معنای غیر لفظی دارند، در BASH وجود دارد، موقعی که این کاراکترها را استفاده میکنیم، BASH این کاراکترها و معنی خاص آنها را ارزیابی میکند، اما به طور معمول، آنها را به دستورات عبور نمیدهد. اینها را فوق کاراکترها نیز نامیدهاند.
در اینجا تعدادی از این کاراکترها و عملی که انجام میدهند آمده است:
[فضای سفید]: فضای سفید( فاصلهها، Tabها، و سطرجدید). BASH از فضای سفید برای اینکه یک کلمه از کجا شروع میشود و در کجا تمام میشود استفاده میکند. اولین کلمه از هر فرمان به عنوان نام دستور تلقی میگردد، و هر کلمه اضافه دیگر، به منزله شناسه برای آن دستور میباشد.
$: کاراکتر بسط. این کاراکتر در اکثر جایگزینیها از جمله بسط پارامتر( جایگزینی متغیر) استفاده میشود. بعداً بیشتر در باره آن خواهیم گفت.
'متن': نقلقول تکی متن درونش را از هرگونه بسط توسط شل محافظت نموده و از شکسته شدن آن به کلمات یا شناسههای چندگانه ممانعت مینماید. این نقلقولها همچنین از معانی خاص کاراکترهای ویژه داخل نقلقول پیشگیری میکنند.
"متن": نقلقول دوگانه، متن درونش را از شکسته شدن به کلمات و شناسههای چندگانه محافظت میکنند، اما انجام جایگزینی را اجازه میدهند. آنها از معنای ویژه اکثر کاراکترهای خاص در درون نقلقول،-- اساساً همه غیر ازکاراکتر $-- جلوگیری میکنند.
#: کاراکتر توضیح. هر کلمه شروع شده با کاراکتر # شروع یک توضیح خواهد بود که تا سطر جدید ادامه خواهد یافت. توضیحات توسط پوسته پردازش نمیشوند.
;: جدا کننده دستور. سمیکالن برای جدا کردن دستورات چندتایی از یکدیگر، در صورت انتخاب کاربر برای در یک سطر قرار دادن آنها، به کار میرود. اساساً چیزی مانند سطر جدید است.
\: کاراکتر گریز. ممیز برعکس(backslash) از اینکه کاراکتر پس از آن به هر طریق ویژهای به کار رود پیشگیری میکند. این خاصیت در نقلقول دوگانه عمل میکند اما در نقلقول تکی خیر .
~: علامت مد یک میانبر برای دایرکتوری خانگی شما میباشد. خودش به تنهایی، یا وقتی که با یک / دنبال میشود، این کاراکتر معادل $HOME میباشد. موقعی که با یک نام کاربری دنبال شود، به معنای دایرکتوری خانگی آن کاربر خواهد بود. مثالها: cd ~john/bin; cp coolscript ~/bin
> یا <: کاراکترهای تغییر مسیر. این کاراکترها برای اصلاح( تغییر جهت ) ورودی و یا خروجی یک فرمان به کار میروند. تغییر مسیرها بعداًپوشش داده میشوند.
|: خطلولهها ارسال خروجی یک دستور به عنوان ورودی به یک دستور دیگر را فراهم میکنند.
[[ عبارت ]]: بررسی عبارت. یک عبارت شرطی را به صورت منطقی برای تعیین آنکه آیا صحیح است یا غلط ارزیابی میکند.
{ commands; } : گروهبندی فرمانها. با دستورات داخل ابروها مانند آنکه یک دستور واحد باشند رفتارمیشود. برای جاهایی که دستور زبان BASH فقط یک دستور را لازم دارد، و شما حس نمیکنید که یک تابع آن را برآورده سازد، ارائه گردیده.
`دستور` و $(command) : جایگزینی دستور ( حالت دوم به مراتب ارجحتر میباشد.) جایگزینی فرمان اول دستور داخل علامتها را اجرا میکند، و سپس تمامی `...` یا $(...) را با خروجی استاندارد دستور تعویض مینماید.
(دستور): اجرای زیر پوسته. این به جای پوسته فعلی دستور را در یک پوسته bash جدید اجرا میکند. اگر این دستور موجب اثرات جانبی( مانند تغییر متغیرها) بشود، این تغییرات در پوسته جاری تأثیر نمیکنند.
((عبارت)): دستور محاسبات. عملگرهای داخل پرانتزها از قبیل + و - و * و / به عنوان عملگرهای ریاضی در نظر گرفته میشوند. این ساختار میتواند برای تخصیصهایی مثل ((a=$b+7)) و نیز بررسیهایی مثل if (($a < $b)) به کار برود. بعداً بیشتر توصیح میدهیم.
$((expression)): جایگزینی حسابی. نظیر مورد فوق، اما در اینجا نتایج ارزیابی حسابی جایگزین میگردد. مثال:
echo "The average is $(( ($a+$b)/2 ))".
چند مثال:
$ echo "I am $LOGNAME"
I am lhunath
$ echo 'I am $LOGNAME'
I am $LOGNAME
$ # boo
$ echo An open\ \ \ space
An open space
$ echo "My computer is $(hostname)"
My computer is Lyndir
$ echo boo > file
$ echo $(( 5 + 5 ))
10
$ (( 5 > 0 )) && echo "Five is bigger than zero."
Five is bigger than zero.