دوستان و علاقمندان به مباحث آموزش یونیکس (UNIX) ، این آموزش را از سایت پی وی لرن دنبال خواهیم نمود. در این بخش از آموزش با متغیرهای ویژه در یونیکس (UNIX) آشنا خواهیم شد.
در این بخش، به طور مفصل در مورد متغیرهای ویژه در یونیکس بحث خواهیم کرد. در بخش های قبلی گفتیم که وقتی در اسامی متغیر از برخی کاراکتر های غیر الفبایی استفاده می کنیم باید مراقب باشیم. این امر به این دلیل است که از این کاراکتر ها در نام متغیرهای خاص یونیکس استفاده می شود. این متغیرها برای توابع خاص محفوظ است.
به عنوان مثال ، کاراکتر $ نشانگر شماره ID فرآیند یا PID پوسته جاری است.
1 | $echo $$ |
دستور فوق PID شل جاری را می نویسد.
1 | 29949 |
در جدول زیر تعدادی متغیر خاص وجود دارد که می توانید در اسکریپت های شل خود استفاده کنید.
ردیف | متغیر و شرح |
---|---|
۱ | $۰ filename فایل جاری.
|
۲ | n$ این متغیرها با آرگومان هایی که با استفاده از یک اسکریپت استناد شده است، مطابقت دارد. در این جا n یک عدد اعشاری مثبت مطابق با موقعیت یک آرگومان (آرگومان اول ۱$ ، آرگومان دوم ۲$ و غیره) است.
|
۳ | #$ تعداد آرگومان های ارائه شده به یک اسکریپت.
|
۴ | *$ همه آرگومان ها به صورت کوتیشن دوتایی هستند. اگر یک اسکریپت دو آرگومان دریافت کند ، *$ معادل ۱$ ۲$ است.
|
۵ | @$ همه آرگومان ها به صورت کوتیشن دوتایی جداگانه هستند. اگر یک اسکریپت دو آرگومان دریافت کند ، @$ معادل ۱$ ۲$ است.
|
۶ | ?$ وضعیت خروج آخرین فرمان اجرا شده است.
|
۷ | $$ شماره فرآیند شل جاری. برای shell script ها ، این ID فرایندی است که تحت آن ها در حال اجرا هستند.
|
۸ | !$ شماره فرایند آخرین دستور background. |
آرگومان های خط فرمان $۱, $۲, $۳, …$۹، پارامترهای موقعیتی هستند که ۰$ به فرمان واقعی ، برنامه ، shell script یا تابع و $۱, $۲, $۳, …$۹ به عنوان آرگومان هایی برای آن دستور اشاره دارد.
اسکریپت زیر از متغیرهای مختلف مربوط به خط فرمان استفاده می کند.
1 2 3 4 5 6 7 8 | #!/bin/sh echo "File Name: $0" echo "First Parameter : $1" echo "Second Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#" |
در این جا نمونه ای برای اسکریپت فوق وجود دارد.
1 2 3 4 5 6 7 | $./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2 |
پارامترهای خاصی وجود دارد که امکان دسترسی به همه آرگومان های خط فرمان را به طور همزمان فراهم می کنند. *$ و @$ هر دو یکسان عمل می کنند ، مگر این که در نقل قول مضاعف محصور شوند ، “”.
هر دو پارامتر آرگومان های خط فرمان را مشخص می کنند. با این حال ، پارامتر ویژه “*$” کل لیست را به عنوان یک آرگومان با فاصله بین و پارامتر ویژه “@$” کل لیست را می گیرد و آن را به آرگومان های جداگانه تقسیم می کند.
می توانیم اسکریپت شل را مطابق شکل زیر بنویسیم تا تعداد نامعلوم آرگومان های خط فرمان را با پارامترهای خاص *$ یا @$ پردازش کنیم.
1 2 3 4 5 6 | #!/bin/sh for TOKEN in $* do echo $TOKEN done |
در این جا نمونه ای برای اسکریپت فوق وجود دارد.
1 2 3 4 5 6 | $./test.sh Zara Ali 10 Years Old Zara Ali 10 Years Old |
توجه – در این جا …Here do انجام شده نوعی حلقه است که در آموزش بعدی پوشش داده خواهد شد.
متغیر ?$ وضعیت خروج دستور قبلی را نشان می دهد.
وضعیت خروج یک مقدار عددی است که توسط هر دستور پس از اتمام آن بازگردانده می شود. به عنوان یک قاعده ، اکثر دستورات در صورت موفق بودن وضعیت خروج ۰ را برمی گردانند و اگر ناموفق بودند ۱٫
برخی از دستورات به دلایل خاص وضعیت خروج اضافی را برمی گردانند. به عنوان مثال ، برخی از دستورات، بین انواع خطاها تفاوت قایل شده و بسته به نوع خاص خرابی ، مقادیر مختلف خروج را برمی گرداند.
در زیر مثال دستورات موفق آمده است.
1 2 3 4 5 6 7 8 9 10 | $./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2 $echo $? 0 $ |
در این بخش از آموزش یونیکس با نحوه ی کار با متغیرهای ویژه آشنا شدیم. در بخش بعد استفاده از آرایه ها را مورد بحث قرار می دهیم. با وب سایت اموزشی پی وی لذن همراه باشید.