اجازه دهید قبل از اقدام واقعی واژگان به کار رفته را مرتب کنیم. پارامترها و متغیرها را داریم. متغیرها در واقع فقط نوعی از پارامترها میباشند: پارامترهایی که با یک نام مشخص میشوند. آن پارامترهایی که متغیر نیستند، پارامترهای خاص نامیده شدهاند. اطمینان دارم که با چند مثال بهتر متوجه خواهید شد:
$ # Some parameters that aren't variables: $ echo "My shell is$0 , and has these options set:$- "My shell is $ # Some parameters that ARE variables: $ echo "I am-bash , and has these options set:himB $ LOGNAME , and I live at$ HOME ."I am lhunath, and I live at /home/lhunath.
لطفاً توجه نمایید: برخلاف PHP و Perl ...پارامترها با علامت $ شروع نمیشوند.علامت
گمان میکنم حالا، مقصود را دریافتهاید. در اینجا خلاصهای از اکثر پارامترهای ویژه:
0: محتوی نام یا مسیر اسکریپت است( این در همه حال صدق نمیکند. )
پارامترهای موضعی(مکانی): 1, 2, 3 ...، اینها محتوی شناسههایی میباشند که ما به اسکریپت یا تابع جاری میدهیم.
*: به همه کلمات تمام پارامترهای موضعی بسط مییابد. اگر نقلقول دوگانه بشود، به یک رشته منفرد شامل تمام پارامترهای موضعی بسط مییابد، که با اولین کاراکتر متغیر
@: به تمام کلمات پارامترهای موضعی بسط مییابد، اگر نقلقول دوگانه بشود، به لیستی از تمام کلمات پارامترهای موضعی به صورت کلمههای منفرد، بسط مییابد.
#: به عدد معادل تمام پارامترهای موضعی(مکانی) ارائه شده فعلی، بسط مییابد.
?: به کد خروج آخرین فرمان تکمیل شده در پیشزمینه، بسط مییابد.
$: به PID ( شماره ID پردازش) پوسته جاری، بسط مییابد.
!: به PID آخرین دستور اجرا شده در پسزمینه، بسط مییابد.
_: به آخرین شناسه آخرین فرمانی که اجرا شده است، بسط داده میشود.
و در اینجا چند مثال از متغیرهایی که پوسته برای شما فراهم میکند:
(خیلی بیشتر از اینها وجود دارد-- برای لیست جامع، مستندات را ملاحظه نمایید.) البته، شما محدود به این متغیرها نمیباشید. هرطور که مایلید متغیرهای خودتان را تعریف کنید:
$country = Canada $ echo "I am$ LOGNAME and I currently live in$ country ."I am lhunath and I currently live in Canada.
توجه داشته باشید که ما کمیت
$language = PHP -bash: language: command not found $language = PHP $ echo "I'm far too used to $language."I'm far too used to PHP.
به خاطر بیاورید که BASH پرل یا PHP نیست. شما باید خیلی مراقب چگونگی کارکرد بسط، جهت پرهیز از دردسر بزرگ، باشید. اگر این طور عمل نکنید، موقعیتهای خیلی خطرناکی در اسکریپتهایتان خلق میکنید، بهخصوص موقعی که این اشتباه با دستور rm همراه باشد:
$ lsno secret secret $file = 'no secret ' $ rm$ file rm: cannot remove `no': No such file or directory
فرض کنید ما دو فایل
عادت مفید:
همواره باید بسطهای پارامتر را به طور صحیح نقلقولی کنید. این امر از تفسیر فضای سفید یا جانشینهای احتمالی در داخل آنها و دادن موی خاکستری به شما یا پاک کردن غیر منتظره فایلها از کامپیوترتان، پیشگیری میکند. تنها PE(بسط پارامتر) خوب، PE نقلقولی شده است.
در مستندات گنو: Shell Parameters , Shell Variables
در پرسش و پاسخهای رایج:
چگونه میتوانم دو متغیر را به هم الحاق کنم؟ چگونه یک رشته را در یک متغیر اضافه(پیوست) کنم؟
چطور میتوانم پارامترهای موضعی(مکانی) بعد از $9 را دستیابی کنم
متغیر: یک متغیر نوعی از پارامتر است که میتوانید مستقیماً آن را ایجاد و ویرایش کنید. با یک نام مشخص میشود، که باید با یک حرف یاخط زیر(
بسط: بسط موقعی رخ میدهد که یک پارامتربا علامت دلار قبل از نامش همراه باشد. BASH مقدار پارامتر گرفته و قبل از اجرای دستور، بسط پارامتر را با آن جایگزین مینماید. این عمل جایگزینی هم نامیده میشود.