9. Case

دستور case یک مجموعه کامل از دستورات ‎ if .. then .. else‎ را انجام می‌دهد. واقعاً ترکیب ،کاملاً ساده‌ای دارد:
talk.sh
#!/bin/sh

echo "Please talk to me ..."
while :
do
  read INPUT_STRING
  case $INPUT_STRING in
	hello)
		echo "Hello yourself!"
		;;
	bye)
		echo "See you again!"
		break
		;;
	*)
		echo "Sorry, I don't understand"
		;;
  esac
done
echo 
echo "That's all folks!"

بسیارخوب ، بهترین شیرین زبان جهان نیست، این فقط یک مثال است!

سعی کنید اجرایش کنید و ببینید چطور کار می‌کند...

$ ./talk.sh
Please talk to me ...
hello
Hello yourself!
What do you think of politics?
Sorry, I don't understand
bye
See you again!

That's all folks!
$
ترکیب دستوری آن کاملاً ساده است:
سطر خود case همیشه به همان شکل است، وبه معنی آن است که داریم مقدار متغیر INPUT_STRING را بررسی می‌کنیم.


بعد گزینه‌های مورد نظر لیست شده‌اند، و در ادامه هر کدام یک پرانتز سمت راست به صورت ‎hello)‎ و ‎bye)‎ آمده است.
این به آن معنی است که اگر محتوای INPUT_STRING با hello مطابقت می‌کند، بعد قسمت کد تا رسیدن به سمی‌کالن ها اجرامی‌شود.
اگر محتوی متغیر INPUT_STRING با کلمه bye مطابقت کند، سپس پیغام خداحافظی نمایش یافته و از حلقه خارج میشود. توجه نمایید که اگر می‌خواستیم به طور کلی از اسکریپت خارج شویم، می‌بایست از دستور exit به جای فرمان break استفاده می‌کردیم.
در این جا سومین گزینه ‎ *)‎ پیش‌فرض تمام شرط‌های دیگر است، ضروری نیست امااغلب، حتی اگر گمان می‌کنیم تمام مقایر بررسی متغیر را می‌دانیم، برای اشکالزدایی مفید است.

تمام ساختار case با کلمه esac خاتمه می‌یابد(وارونه !case ) بعد هم حلقه while را با یک done تمام می‌کنیم.

تمام پیچیدگی شرایط case به همین اندازه است، امااین ساختار می‌تواند ابزار سودمند و قدرتمندی باشد. این ساختار غالباً برای تجزیه پارامترهای ارسال شده به اسکریپت پوسته، در میان سایر اعمال، به کارمی‌رود.

Steve Parker  نوشته  Bourne و Bash راهنمای آموزشی اسکریپت نویسی
لطفاً برای بهتر دیدن صفحه از فایرفاکس استفاده کنید