برنامه نویسی مقدماتی پوسته لینوکس ( bash ) : پایپ کردن و معرفی متغیرها (II)

پایپ ها

در این بخش به شما نحوه‌ی استفاده از پایپ ها را می‌گوییم و این‌که چرا ممکن است به آن‌ها نیاز داشته باشید.
پایپ چیست و چرا شاید بخواهید از آن‌ها استفاده کنید.
پایپ ها میتوانند خروجی یک برنامه را بعنوان ورودی یک برنامه دیگر بدهند.

یک پایپ لاین ساده

پایپ نام یک علامت است | – یک خط عمودی صاف.
به کمک علامت پایپ خروجی یک برنامه یا دستور را تبدیل به ورودی یک برنامه دیگر میکنیم. یا خروجی را به ورودی بعدی میدهیم. مثال زیر را ببینید:

Cat input.txt | grep school | grep –v Xtra

برنامه کمکی cat را در جلسه اول مشاهده کردید. متنی را به خروجی استاندارد میفرستاد (stdout). استفاده از علامت پایپ | آن را به grep پاس میدهد.
برنامه کمکی grep نیز بدنبال عبارتی میگردد که روبرویش نوشته میشود – هر خطی را که شامل آن عبارت بود، چاپ میکند. برای مثال grep school کل متن درون input.txt که به وسیله‌ی علامت پایپ | به آن پاس داده شده، را میگردد. هر خطی که school داشت را چاپ میکند. دوباره خطوط چاپ شده در grep به وسیله علامت | به grep بعدی پاس داده میشوند.
آخرین grep دارای سوییچ –v است. این سوییچ همه خطوطی را چاپ میکند که شامل Xtra نباشند. در واقع این سوییچ علامت نفی است.
نتیجه آخری به این شکل است که pipeline تمامی خطوطی که شامل school هستند و شامل Xtra نیستند را چاپ میکند.
یک مثال دیگر sed است:

ls -l | sed -e “s/[aeio]/u/g”

گرفتن یک لیست با جزییات، ورودی sed است که هر کدام از حروف a,e,i,o را با u جانشانی میکند. سوییچ s اینکار را انجام میدهد و به معنای substitute است. g هم global است و اینکار را در کل متن اجرا میکند. Sed خروجی را stdout و روی ترمینال می فرستد. شما میتوانید آنرا در یک فایل هم چاپ کنید. از نکات جلسه قبل استفاده کنید.

متغیرها

میتوانید از متغیرها مثل همه زبانهای برنامه نویسی استفاده کنید. فقط زیبایی برنامه نویسی پوسته به این است که دیگر نیازی به تعیین data type ندارید. فقط کافیست به متغیر مقداری انتساب کنید و هر جا خواستید به آن متغیر ارجاع دهید.
مثال:

برنامه ساده hello world اینبار با متغیرها

#!/bin/bash
String=”Hello World!”
Echo $stringg

خط ۲، متغیری بنام stringg ایجاد میکند و مقدار “Hello World!” انتساب می‌کند. حالا اگر بخواهید این متغیر را هر جایی در کد فراخوانی کنید باید علامت دلار را پشت سرش بگذارید. در این مورد با نوشتن $stringg می‌توانید Hello World! را فراخوانی کنید.

یک مثال برای ایجاد فایل پشتیبانی

#!/bin/bash
Filee=~/Desktop/back-up-$(date +%Y%m%d).tgz
Tar –cZf $Filee /directory_to_be_archived

دستوراتی مثل date یا ls که در خود لینوکس تعریف شده هستند را باید درون پرانتز نوشت تا مقدارشان بازیابی شود.
دستور زیر را نیز امتحان کنید:

#!/bin/bash
Echo $(ls)
Echo ls
Echo $ls

با اجرای کدهای بالا همه چیز را در رابطه با متغیرها خواهید آموخت.

متغیرهای محلی (local) و متغیرهای جهانی (global)

متغیرهای محلی با کلید local تعریف میشوند و منحصر به یک بلوک خاص هستند. ولی مفهومشان را در بیرون آن بلوک از دست میدهند.

#!/bin/bash
HELLO=Hello
function hello {
local HELLO=World
echo $HELLO
}
echo $HELLO
hello
echo $HELLO

به بزرگی و کوچکی حروف دقت کنید. مثال فوق گویای همه چیز هست.
برای فهم بهتر دستورات، درباره آن بحث کنید یا خودتان یکبار با انجام مثال آنها را بررسی کنید.

نظرات