دوستان و علاقمندان به مباحث آموزش یونیکس (UNIX) ، این آموزش را از سایت پی وی لرن دنبال خواهیم نمود. بررسی Shell Substitution در یونیکس (UNIX) را در این بخش از آموزش، دنبال خواهیم نمود.
شل در هنگام مواجهه با عبارتی که شامل یک یا چند کاراکتر ویژه باشد ، جایگزینی را انجام می دهد.
در این جا ، مقدار چاپ متغیر با مقدار آن جایگزین می شود. در همان زمان ، ” n\” با یک خط جدید جایگزین می شود.
1 2 3 4 5 | Live Demo #!/bin/sh a=10 echo -e "Value of a is $a \n" |
نتیجه زیر را دریافت خواهید کرد.
1 | Value of a is 10 |
نتیجه زیر بدون گزینه e- است.
1 | Value of a is 10\n |
توالی فرار زیر که در دستور echo قابل استفاده است.
ردیف | Escape و شزح |
---|---|
۱ | \\ backslash |
۲ | a\ (alert (BEL |
۳ | b\ backspace |
۴ | c\ suppress trailing newline |
۵ | f\ form feed |
۶ | n\ خط جدید
|
۷ | r\ بازگشت نورد (carriage)
|
۸ | t\ تب افقی
|
۹ | v\ تب عمودی |
برای غیرفعال کردن تفسیر فرارهای backslash (پیش فرض) می توانید از گزینه E- استفاده کنید.
می توانید از گزینه n- برای غیرفعال کردن درج یک خط جدید استفاده کنید.
دستور Substitution مکانیسمی است که توسط آن شل مجموعه معینی از دستورات را انجام می دهد و سپس substitutes خروجی آن ها را در محل دستورات جایگزین می کند.
دستور Substitution زمانی انجام می شود که یک command به صورت زیر به آن داده شود.
1 | `command` |
هنگام انجام فرمان substitution ، اطمینان حاصل کنید که از backquote استفاده می کنید ، نه از کاراکتر نقل قول تکی.
دستور substitution به طور کلی برای اختصاص خروجی یک فرمان به یک متغیر استفاده می شود. هر یک از مثال های زیر فرمان substitution را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 | #!/bin/sh DATE=`date` echo "Date is $DATE" USERS=`who | wc -l` echo "Logged in user are $USERS" UP=`date ; uptime` echo "Uptime is $UP" |
پس از اجرا، نتیجه زیر را دریافت خواهید کرد.
1 2 3 4 | Date is Thu Jul 2 03:59:57 MST 2009 Logged in user are 1 Uptime is Thu Jul 2 03:59:57 MST 2009 03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15 |
متغیر Substitution، برنامه نویس شل را قادر می سازد تا مقدار متغیر را بر اساس وضعیت خود دست کاری کند.
در جدول زیر همه Substitution های ممکن وجود دارد.
ردیف | فرم و شرح |
---|---|
۱ | {var}$ مقدار var را جایگزین می کند.
|
۲ | {var:-word}$ اگر var تهی یا تنظیم نشده باشد ، word برای var جایگزین می شود. مقدار var تغییر نمی کند.
|
۳ | {var:=word}$ اگر var تهی یا تنظیم نشده باشد ، var روی مقدار word تنظیم می شود.
|
۴ | {var:?message}$ اگر var تهی یا تنظیم نشده باشد ، message برای خطای استاندارد (standard error) چاپ می شود. این بررسی می کند که متغیرها به درستی تنظیم شده اند.
|
۵ | {var:+word}$ اگر var تنظیم شود ، word برای var جایگزین می شود. مقدار var تغییر نمی کند. |
در زیر مثالی برای نمایش حالت های مختلف substitution فوق آمده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/bin/sh echo ${var:-"Variable is not set"} echo "1 - Value of var is ${var}" echo ${var:="Variable is not set"} echo "2 - Value of var is ${var}" unset var echo ${var:+"This is default value"} echo "3 - Value of var is $var" var="Prefix" echo ${var:+"This is default value"} echo "4 - Value of var is $var" echo ${var:?"Print this message"} echo "5 - Value of var is ${var}" |
پس از اجرا، نتیجه زیر را دریافت خواهید کرد.
1 2 3 4 5 6 7 8 9 10 | Variable is not set 1 - Value of var is Variable is not set 2 - Value of var is Variable is not set 3 - Value of var is This is default value 4 - Value of var is Prefix Prefix 5 - Value of var is Prefix |
بررسی Shell Substitution در یونیکس (UNIX) را در این بخش از آموزش یونیکس دنبال نمودیم. در بخش بعد به بررسی مکانیسم های نقل قول Shell می پردازیم. با وب سایت آموزشی پی وی لرن همراه باشید.