از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش پیاده سازی حلقه ها در Bash
سرفصلهای مطلب
حلقه بخش اصلی هر زبان برنامه نویسی است. حلقه های “for”، “foreach” و “while-do” در Bash برای حل مسائل مختلف برنامه نویسی استفاده می شوند. بسیاری از کارهای تکراری را می توان با استفاده از حلقه “for” انجام داد و عمدتاً برای تکرار حلقه به تعداد محدود بارها استفاده می شود. حلقه “while” عمدتا زمانی استفاده می شود که تعداد تکرار حلقه از پیش تعریف نشده باشد. کاربردهای مختلف حلقه “for” و حلقه “while” در این آموزش با استفاده از چندین اسکریپت Bash نشان داده شده است.
فهرست مطالب:
-
- استفاده از حلقه “For” برای خواندن یک رشته
- استفاده از حلقه “For” برای خواندن فهرستی از داده ها
- استفاده از حلقه “For” برای خواندن یک آرایه
- استفاده از حلقه “For” برای خواندن محدوده مقادیر
- اسکریپت را با استفاده از حلقه سه بیانی “For” تکرار کنید
- استفاده از حلقه “برای” بی نهایت
- استفاده از حلقه “For” با عبارت Break
- استفاده از حلقه “For” با عبارت Continue
- استفاده از حلقه “For” برای خواندن آرگومان های خط فرمان
- استفاده از حلقه “For” برای خواندن یک آرایه انجمنی
- استفاده از حلقه “For” با “Seq”
- استفاده از حلقه “For” با دستور
- استفاده از حلقه “For” تودرتو
- استفاده از حلقه “While” برای خواندن یک فایل
- استفاده از حلقه “While” با شرایط چندگانه
استفاده از حلقه “For” برای خواندن یک متن
ساده ترین استفاده از حلقه “for” در اسکریپت زیر نشان داده شده است. یک رشته از سه کلمه توسط حلقه تجزیه می شود و هر کلمه در هر خط چاپ می شود.
# هر کلمه از متن را بخوانید
برای val که در زبان اسکریپت Bash
انجام دادن
#مقدار تجزیه شده را چاپ کنید
اکو $val
انجام شده
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
استفاده از حلقه “For” برای خواندن فهرستی از داده ها
روش چاپ لیستی از داده ها با استفاده از حلقه “for” در اسکریپت زیر نشان داده شده است. در اینجا، چهار آیتم لیست با استفاده از حلقه تجزیه می شوند و هر مورد در هر خط چاپ می شود.
# لیست داده ها را بخوانید
برای val که در “ضربه شدید” “پایتون” “پرل” “PHP”
انجام دادن
#هر مقدار از لیست را چاپ کنید
اکو $val
انجام شده
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
استفاده از حلقه “For” برای خواندن یک آرایه
روش خواندن هر عنصر از یک آرایه عددی با استفاده از حلقه “for” در اسکریپت زیر نشان داده شده است. آرایه ای از چهار عنصر در اسکریپت اعلام می شود و حلقه هر مقدار آرایه را تجزیه می کند و در هر خط چاپ می کند.
#آرایه عددی را اعلام کنید
اعلام -آ محصولات=( ‘HDD’ “مانیتور” “موش” “صفحه کلید” )
اکو “مقادیر آرایه عبارتند از:”
برای val که در “${محصولات[@]}“
انجام دادن
# هر مقدار آرایه را چاپ کنید
اکو “$val“
انجام شده
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
استفاده از حلقه “For” برای خواندن محدوده مقادیر
روش محاسبه مجموع پنج عدد ورودی با استفاده از حلقه “for” با محدوده مقادیر در آموزش زیر نشان داده شده است. متغیر “$sum” در اینجا برای ذخیره نتیجه جمع بندی استفاده می شود و قبل از تکرار حلقه و گرفتن ورودی از کاربر، به 0 مقداردهی اولیه می شود. در هر تکرار پنج عدد از کاربر گرفته می شود و مجموع اعداد محاسبه می شود.
#متغیر را مقدار دهی اولیه کنید
مجموع=0
حلقه را 5 بار تکرار کنید
برای n که در {1..5}
انجام دادن
#از کاربر شماره بگیرید
اکو -n “شماره ای را وارد کنید:”
خواندن تعداد
#مجموع عدد را محاسبه کنید
((مجموع+=تعداد $))
انجام شده
#مجموع اعداد را چاپ کنید
اکو “مجموع 5 عدد است $ مجموع“
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
اسکریپت را با استفاده از حلقه سه بیانی “For” تکرار کنید
حلقه “for” سه عبارتی، روش مرسوم استفاده از حلقه “for” برای هر زبان برنامه نویسی است. اسکریپت زیر استفاده از حلقه “for” سه عبارتی را در Bash برای چاپ مقادیر یک آرایه نشان می دهد.
#آرایه ای از 4 عنصر را اعلام کنید
اعلام -آ نام ها=(“کمال” “صابر” “زینیا” “جابر” “جعفر”)
#کل عناصر آرایه را بشمارید
لن=${#names}
#مقادیر آرایه را چاپ کنید
اکو “مقادیر آرایه عبارتند از:”
برای (( من=0; من<$لن; i++ ))
انجام دادن
#هر مقدار آرایه را چاپ کنید
اکو “${names[$i]}“
انجام شده
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
استفاده از حلقه “برای” بی نهایت
استفاده از حلقه “for” سه عبارتی برای تعریف یک حلقه بی نهایت در اسکریپت زیر نشان داده شده است. حلقه برای بی نهایت بار تکرار می شود تا زمانی که کاربر “Ctrl+C” را فشار دهد، مقدار ورودی را بگیرد و مقدار را در هر تکرار چاپ کند.
#حلقه بی نهایت تعریف کنید
برای (( ; ; ))
انجام دادن
#از کاربر ورودی بگیرید
اکو -n “یک عدد را تایپ کنید:”
خواندن تعداد
#مقدار ورودی را چاپ کنید
اکو “شما وارد شده اید تعداد $“
#چاپ پیام برای خاتمه حلقه
اکو “برای خروج CTRL+C را تایپ کنید.”
انجام شده
خروجی:
خروجی زیر پس از اجرای اسکریپت ظاهر می شود. با توجه به خروجی، “Ctrl+C” پس از گرفتن مقادیر ورودی 45 و 89 فشار داده می شود:
استفاده از حلقه “For” با عبارت Break
دستور “break” در داخل یک حلقه برای خاتمه از حلقه مبتنی بر استفاده می شود روی شرایط خاص دو command-line مقادیر آرگومان قبل از شروع اجرای حلقه “for” بی نهایت بررسی می شود. اگر مقادیر آرگومان خالی نباشد، منویی برای کاربر نمایش داده می شود تا چهار نوع عملیات حسابی را انجام دهد یا از حلقه خاتمه دهد. اگر کاربر عدد 5 را فشار دهد، اولین شرط “if” در داخل حلقه “for” درست است و دستور “break” برای خاتمه از حلقه اجرا می شود. در غیر این صورت، عملیات حسابی خاص بر اساس انجام می شود روی مقدار ورودی
#دو مقدار از را بخوانید command-line استدلال ها
num1=1 دلار
num2=2 دلار
# خالی بودن یا نبودن مقادیر را بررسی کنید
اگر [[ ! -z $num1 && ! -z $num2 ]]
سپس
برای (( ; ; ))
انجام دادن
#نمایش منو
اکو “1. افزودن”
اکو “2. تفریق”
اکو “3. ضرب”
اکو “4. تقسیم”
اکو “5. خروج”
خواندن -پ “انتخاب خود را وارد کنید:” پاسخ
اگر 5 فشار داده شد، حلقه را خاتمه دهید
اگر [ $answer -eq 5 ]
سپس
زنگ تفریح
#اگر 1 را فشار دهید اعداد را اضافه کنید
elif [ $answer -eq 1 ]
سپس
((نتیجه=$num1+$num2))
#اگر 2 را فشار دهید اعداد را کم کنید
elif [ $answer -eq 2 ]
سپس
((نتیجه=$num1–$num2))
اگر عدد 3 را فشار دهید، اعداد را ضرب کنید
elif [ $answer -eq 3 ]
سپس
((نتیجه=$num1*$num2))
اگر عدد 4 را فشار دهید، اعداد را تقسیم کنید
elif [ $answer -eq 4 ]
سپس
((نتیجه=$num1/$num2))
فی
اکو “نتیجه این است $نتیجه“
انجام شده
فی
خروجی:
خروجی زیر پس از اجرای اسکریپت با مقادیر آرگومان 20 و 5 ظاهر می شود. در اینجا “1” به عنوان اولین ورودی گرفته شده و مجموع 20 و 5 چاپ می شود. سپس، “5” به عنوان ورودی دوم که حلقه را خاتمه می دهد، در نظر گرفته می شود:
استفاده از حلقه “For” با عبارت Continue
دستور “continue” در داخل یک حلقه برای ادامه تکرار بعدی حلقه با حذف یک دستور(های) خاص از حلقه استفاده می شود. در اسکریپت زیر از حلقه for استفاده می شود تا 10 بار تکرار شود و اعدادی بین 1 تا 10 که بر 5 بخش پذیر هستند را پیدا کند. دستور Continue برای اعدادی که بر 5 بخش پذیر نیستند اجرا می شود.
اکو “لیست اعدادی که بر 5 بخش پذیر هستند عبارتند از:”
#حلقه را ده بار تکرار کنید
برای n که در {1..10}
انجام دادن
#بررسی کنید که آیا عدد بر 5 بخش پذیر است یا خیر
اگر [ $(($n%5)) -ne 0 ]
سپس
اگر عدد بر 5 بخش پذیر نیست حلقه را ادامه دهید
ادامه هید
فی
#اعدادی را که بر 5 بخش پذیر هستند چاپ کنید
اکو “$n بر 5 بخش پذیر است.”
انجام شده
خروجی:
خروجی زیر پس از اجرای اسکریپت ظاهر می شود. پنج (5) و ده (10) اعدادی هستند که بر 5 بخش پذیر هستند و در خروجی چاپ می شوند:
استفاده از حلقه “For” برای خواندن آرگومان های خط فرمان
روش خواندن command-line مقادیر آرگومان با استفاده از حلقه “for” در اسکریپت زیر نشان داده شده است. نماد “$@” با حلقه “for” برای خواندن هر مقدار آرگومان استفاده می شود command-line. یک متغیر شمارنده در اسکریپت برای چاپ شماره آرگومان با مقدار آرگومان استفاده می شود.
یک شمارنده را #ابتدا اولیه کنید
پیشخوان=1;
# مقادیر آرگومان خوانده شده را تکرار کنید
برای val که در “$@”
انجام دادن
#هر مقدار آرگومان را چاپ کنید
اکو “بحث و جدل شمارنده $: $val“;
شمارنده را #افزایش دهید
((شمارنده ++))
انجام شده
خروجی:
خروجی زیر پس از اجرای اسکریپت با مقادیر آرگومان 12، 56 و 23 ظاهر می شود:
استفاده از حلقه “For” برای خواندن یک آرایه انجمنی
روش خواندن کلیدها و مقادیر یک آرایه انجمنی با استفاده از حلقه “for” در اسکریپت زیر نشان داده شده است. یک آرایه انجمنی از چهار عنصر در اسکریپت تعریف شده است. هر کلید آرایه توسط حلقه در هر تکرار تجزیه می شود و مقدار کلید مربوطه با مقدار کلید بعدا چاپ می شود.
#آرایه انجمنی را اعلام کنید
اعلام -آ نشانه ها=( [56345]=90 [34123]=87 [45231]=64 [87234]=70 )
#حلقه کلیدهای آرایه را تکرار کنید
برای ک که در ${!مارک[@]}
انجام دادن
#هر کلید و مقدار آرایه را چاپ کنید
اکو “شناسه-k $ به دست آمده ${مارک[$k]} نشانه ها.”
انجام شده
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
استفاده از حلقه “For” با “Seq”
اسکریپت زیر استفاده از دستور “seq” را با حلقه “for” نشان می دهد. هفت تاریخ متوالی با استفاده از دستور “seq” در اینجا ایجاد می شود. دستور “date” برای خواندن مقدار ماه جاری به صورت کوتاه استفاده می شود و از این مقدار برای تولید تاریخ استفاده می شود.
#فرم کوتاه مقدار ماه جاری را بخوانید
ماه=`تاریخ +%ب`
#حلقه را ۷ بار تکرار کنید
برای من که در $(دنباله 7)
انجام دادن
#مقدار تاریخ را ایجاد کنید
val=“$i–$ ماه-1402″
#تاریخ را چاپ کنید
اکو «تاریخ ایجاد شده است $val“
انجام شده
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
استفاده از حلقه “For” با فرمان Bash
دستور Bash که لیستی از خروجی را تولید می کند را می توان با استفاده از حلقه “for” تجزیه کرد. اسکریپت زیر فهرستی از تمام فایل های متنی را از محل فعلی که با کاراکتر “t” شروع می شود چاپ می کند.
#خواندن تمام فایل های متنی که با “t” شروع می شوند
برای val که در $(ls تی*txt)
انجام دادن
#نام فایل را چاپ کنید
اکو $val
انجام شده
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
استفاده از حلقه “For” تودرتو
روش تولید یک سری مقادیر با استفاده از حلقه “for” تودرتو در اسکریپت زیر نشان داده شده است. در اینجا، حلقه بیرونی “for” سه بار و حلقه “for” داخلی چهار بار تکرار می شود.
#حلقه بیرونی
برای l1 که در {A..C}
انجام دادن
#حلقه داخلی
برای l2 که در {1..4}
انجام دادن
#مقدار ادغام شده را چاپ کنید
اکو -n “l1 دلارL2 دلار “
انجام شده
انجام شده
#افزودن خط جدید
اکو
خروجی:
پس از اجرای اسکریپت خروجی زیر ظاهر می شود:
استفاده از حلقه “While” برای خواندن یک فایل
استفاده از حلقه “while” برای خواندن محتوای یک فایل در اسکریپت زیر نشان داده شده است. در اینجا، نام فایل در قسمت عبور می کند command-line آرگومان و حلقه “while” محتوای فایل را خط به خط می خواند.
#حلقه هر خط از فایل را تجزیه می کند
#در هر تکرار
در حالی که خواندن خط انجام دادن
#هر خط را چاپ کنید
اکو خط $
#نام فایل را از قسمت بخوانید command-line بحث و جدل
انجام شده < 1 دلار
خروجی:
خروجی زیر پس از اجرای اسکریپت ظاهر می شود. محتوای “temp.txt” در خروجی چاپ می شود:
استفاده از حلقه “While” با شرایط چندگانه
روش استفاده از حلقه “while” با شرایط چندگانه در اسکریپت زیر نشان داده شده است. یک مقدار عددی از کاربر گرفته می شود و اگر مقدار بزرگتر از 10 باشد و مقدار زوج باشد، حلقه تکرار را شروع می کند. در هر تکرار، مقدار چاپ شده و 2 کاهش می یابد.
#از کاربر شماره بگیرید
خواندن -پ “شماره ای را وارد کنید:” تعداد
اگر [ ! -z $num ]
سپس
#دو شرط را برای حلقه while بررسی کنید
در حالی که [ $num -gt 10 ] && [ $(($num%2)) -eq 0 ]
انجام دادن
شماره را #چاپ کنید
اکو “تعداد $ یکنواخت است.”
#عدد را 2 کاهش دهید
((تعداد=تعداد $–2))
انجام شده
فی
خروجی:
خروجی زیر پس از اجرای اسکریپت برای مقدار ورودی 16 ظاهر می شود:
نتیجه
کاربردهای مختلف حلقه Bash در این آموزش با استفاده از چندین اسکریپت Bash نشان داده شده است که به کاربران Bash کمک می کند تا اهداف استفاده از حلقه Bash را بدانند و از آن به درستی در اسکریپت خود استفاده کنند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 16:54:06