منبع اصلی نوشتار زیر در این لینک قرار دارد

نوشتن سویچ برای اسکریپت های بش

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

معمولا زمانی احتیاج میشه برای برنامه سویچ در نظر بگیریم که برنامه کارهای مختلفی رو انجام می ده یا از تابع های مختلفی تشکیل شده باشه . در این صورته که با استفاده از سویچ تعیین می کنیم کدام تابع باید اجرا و چه کار هایی باید انجام بشه . به عنوان مثال :

iman@OSLearn:~$ ./script -i

 

پس در مرحله اول لازم است کارهایی که برنامه انجام میده رو دسته بندی کنیم، این کار رو از طریق تعریف تابع های مختلف انجام می دیم و در آخر در برنامه تعیین می کنیم که اگر ( به عنوان مثال ) از سویچ i- استفاده شد، تابع iman فراخوانی شود .

به عنوان مثال : برنامه ای می نویسیم که از دو تابع hi و bye تشکل شده است و سویچ h- تابع hi و سویچ b- تابع bye را فراخوانی می کند .

۱. ابتدا تابع hi را درست می کنیم :

function hi {
echo 'Hi'
}

۲. در مرحله بعدی تابع bye را درست می کنیم :

function bye {
echo 'Bye Bye'
}

۳. حال به شکل زیر سویچ های خودمون رو تعریف می کنیم :

case $1 in
	-h) hi ;;
	-b) bye ;;
esac

۴. تمام ! حالا تمامی قطعه کد های بالا رو به هم می چسبونیم و در یک فایل قرار می دیم :

#!/bin/bash
# http://OSLearn.ir

function hi {
echo 'Hi'
}

function bye {
echo 'Bye Bye'
}

case $1 in
	-h) hi ;;
	-b) bye ;;
esac

نکته : منظور از 1$ در خط 12 اولین آرگومان یعنی همان سویچ مورد نظر ما است .

حال کافیه برنامه را با یکی از سویچ های موجود به شکل زیر اجرا کنیم :

iman@OSLearn:~$ ./test.sh -b
iman@OSLearn:~$ ./test.sh -h

 

البته این اسکریپت جای کار بسیار دارد چرا که فرض کنید اسکریپت با سویچی غیر از سویچ های موجود یا حتی بدون سویچ اجرا شود، برای همچین حالات هایی برنامه ای در نظر نگرفته شده است.

 

موفق و موید باشید .

منبع : او اس لرن دات آی آر | http://OSLearn.ir

نویسنده : E2MA3N

از این مطلب راضی هستید ؟ می خواهید به سایت کمک کنید ؟ رضایت خودتون رو با دونیت به ما اعلام کنید . برای دونیت روی خرید کلیک کنید . با تشکر



برچسب ها : , , , , , , , ,