میتوانید از اسکریپتهای Bash برای خودکار کردن انواع کارها استفاده کنید. با اصول اولیه آشنا شوید و سفر برنامه نویسی Bash خود را آغاز کنید.
اسکریپت های Bash برای خودکارسازی وظایف مفید هستند و خواهید دید که برای ساخت برنامه های ساده خط فرمان عالی هستند. پوسته Bash اسکریپت های Bash را تفسیر می کند، بنابراین برای نوشتن و اجرای آنها نیازی به نصب وابستگی ندارید. اسکریپت های Bash نیز قابل حمل هستند زیرا اکثر سیستم عامل های مبتنی بر یونیکس از یک مفسر پوسته استفاده می کنند.
دانش برنامه نویسی Bash برای هر توسعه دهنده ای ضروری است، به خصوص اگر با سیستم های مبتنی بر یونیکس کار می کنید.
متغیرها در Bash
متغیرهای Bash به حروف بزرگ و کوچک حساس هستند. برای تعریف متغیرها، از علامت تساوی (=) با نام در سمت چپ و مقدار در سمت راست استفاده کنید:
STATE=Washington
مقداری که این اعلان به STATE می دهد یک کلمه است. اگر به فاصله در مقدار خود نیاز دارید، از نقل قول در اطراف آن استفاده کنید:
STATE="North Arizona"
برای ارجاع به متغیرها در سایر متغیرها یا عبارات، باید از پیشوند علامت دلار ($) استفاده کنید:
STATE=Washington
LOCATION="My Location is $STATE"
چاپ مقادیر در Bash
روش های مختلفی برای چاپ متغیرها در Bash وجود دارد. می توانید از دستور echo برای خروجی اولیه یا دستور printf به سبک C برای قالب بندی رشته ها استفاده کنید.
STATE=Washington
LOCATION="My Location is $STATE"
echo $LOCATION
پس از اعلام متغیر STATE، این اسکریپت LOCATION را با ارجاع به STATE تعریف می کند. اگر سپس از echo برای چاپ مقدار نهایی متغیر LOCATION استفاده می کند.
کلمه کلیدی printf به شما امکان می دهد از افعال قالب بندی برای خروجی داده استفاده کنید. افعال قالب بندی رشته ای مشابه افعال C و Go هستند اما با افعال محدود.
فعل
عملکرد
%c
تک کاراکترها را چاپ می کند
%o
8 دسیمال را چاپ می کند
%s
رشته ها را مستقل از پوشش چاپ می کند
٪ایکس
هگزادسیمال را با حروف کوچک چاپ می کند
٪ایکس
با حروف بزرگ هگزادسیمال چاپ می کند
%d
اعداد صحیح را چاپ می کند
%e
نمادهای علمی شناور را با حروف کوچک چاپ می کند
%E
نمادهای علمی شناور را با حروف بزرگ چاپ می کند
% f
اعداد ممیز شناور را چاپ می کند
%%
یک نماد درصد واحد را چاپ می کند.
در اینجا مثالی از استفاده از فعل با کلمه کلیدی چاپ آورده شده است.
STATE=Lagos
printf "My Location is %s" $STATE
تابع printf متغیر STATE را در موقعیت فعل %s جایگزین میکند و خروجی «مکان من لاگوس است» خواهد بود.
نظرات در Bash
میتوانید با نماد هش یا پوند (#) در Bash نظر بدهید. پوسته به طور خودکار نظرات را نادیده می گیرد.
#!/bin/bash
# STATE=Washington
# LOCATION="My Location is $STATE"
هیچ نظر چند خطی وجود ندارد. اکثر IDE ها و ویرایشگرهای متن به شما اجازه می دهند با میانبر Ctrl/Command + فوروارد اسلش(/) نظر بدهید. شما باید بتوانید از میانبر برای ایجاد نظرات تک خطی متعدد استفاده کنید.
دریافت ورودی کاربر در Bash
مانند بسیاری از زبان های برنامه نویسی دیگر، می توانید ورودی کاربر را در Bash دریافت کنید تا برنامه ها/اسکریپت های خود را تعاملی تر کنید. می توانید از دستور read برای درخواست ورودی کاربر استفاده کنید.
read response
در این حالت، متغیر پاسخ، ورودی کاربر را هنگام تحویل نگه میدارد.
echo "What do you want ?: "
read response
echo $response
درخواست ورودی کاربر در یک خط جدید در مثال بالا خواهد بود.
می توانید پرچم -n را به دستور echo print اضافه کنید تا خطی که کاربر ورودی را در آن وارد می کند حفظ شود.
echo -n "What do you want."
read response
echo $response
اعلان آرایه ها در Bash
آرایه ها در Bash درست مانند بسیاری از زبان ها هستند. با مشخص کردن عناصر داخل پرانتز می توانید یک متغیر آرایه را در Bash اعلام کنید.
Countries=('USA' 'Russia' 'Ukraine', "England", "Taiwan", "China")
دسترسی به یک آرایه از طریق ارجاع به نام متغیر، اولین عنصر را واکشی می کند. با استفاده از علامت ستاره به عنوان شاخص می توانید به کل آرایه دسترسی داشته باشید.
echo ${Countries[*]}
همچنین می توانید شاخص آرایه را برای دسترسی به یک عنصر خاص مشخص کنید. شاخص یک آرایه از صفر شروع می شود.
echo "${Countries[4]}"
اظهارات مشروط در Bash
Bash شرایطی را برای تصمیم گیری در برنامه ها فراهم می کند.
در اینجا آناتومی عبارت if-else در Bash آمده است. برای مشخص کردن پایان شرط باید از نیم دونقطه استفاده کنید.
if [[ condition ]]; then
echo statement1
elif [[condition ]]; then
echo statement2
else [[condition ]]; then
echo statement3
fi
شما باید هر عبارت if را با کلمه کلیدی fi پایان دهید.
if [ 1 == 2 ]; then
echo one
elif [ 2 == 3 ]; then #else-if
echo two
else [ 4 > 3 ];
echo "correct, 3"
fi
می توانید از دستورات case در برنامه های Bash خود با استفاده از کلمه کلیدی case استفاده کنید. شما باید الگویی را که با پرانتزهای انتهایی قبل از عبارت دنبال می شود، مشخص کنید.
CITY=Lagos
case $CITY in
"Washington") # pattern
echo "United States of America" # statement
;; # end of a case
"Lagos" | "Abuja")
echo"Nigeria"
;;
"Johannesburg" | "Cape Town")
echo"South Africa"
;;
*) # default pattern
echo "Antarctica" # default statement
;;
esac # end of the case statement
شما می توانید حروف پیش فرض را با استفاده از علامت ستاره (*) به عنوان الگو تعریف کنید. عبارات موردی باید با کلمه کلیدی esac ختم شوند.
حلقه ها در Bash
بسته به نیاز خود، می توانید از حلقه while، range for-loop یا حلقه C-style برای عملیات های تکرار شونده استفاده کنید.
در اینجا نمونه ای از حلقه for-loop به سبک C آمده است. حلقه های For باید با کلمه کلیدی done خاتمه یابد و شما باید عبارت for را با یک نقطه ویرگول و به دنبال آن کلمه کلیدی do پایان دهید.
for ((a = 0 ; a < 10 ; a+2)); do
echo $a
done
محدوده برای حلقه برای کار با فایل ها و بسیاری از عملیات های دیگر مفید است. شما باید از کلمه کلیدی in با محدوده for-loop استفاده کنید.
for i in {1..7}; do
echo $1
done
در اینجا یک حلقه بی نهایت ساده برای نشان دادن Bash در حین انجام حلقه وجود دارد.
name=1
while [ 1 -le 5 ] # while 1 < 5
do
echo $name
done
-le در عبارت شرط عملگر باینری برای کمتر از.
توابع در Bash
برای اعلام توابع در Bash به کلمات کلیدی نیاز ندارید. می توانید توابع را با نام و سپس پرانتز قبل از بدنه تابع اعلام کنید.
print_working_directory() {
echo $PWD#calling the PWD command from the script
}
echo "You are in $(print_working_directory)"
توابع می توانند متغیرها را در Bash برگردانند. تنها چیزی که نیاز دارید کلمه کلیدی بازگشت است.
print_working_directory() {
return $PWD
}
تابع print_working_directory دایرکتوری کاری فایل را برمی گرداند.
شما می توانید اسکریپت های شل را به زبان های دیگر بنویسید
Bash تنها زبانی نیست که می توانید برای تعامل با پوسته سیستم عامل خود یا ایجاد برنامه های خط فرمان از آن استفاده کنید. می توانید از بسیاری از زبان های دیگر مانند Go، Python، Ruby و Rust استفاده کنید.
بسیاری از سیستم عامل ها پایتون 3 را از قبل نصب کرده اند و پایتون یک زبان رایج است. اگر به عملکردی حتی بیشتر از آنچه که اسکریپت های Bash می توانند ارائه دهند نیاز دارید، از Python استفاده کنید.