در حین
bash می تواند ایده مشابهی را بیان کند. فرض کنید می خواستیم پنج عدد را به ترتیب نمایش دهیم-
ترتیب تیال از یک تا پنج آ بر هم زدن اسکریپت را می توان به صورت زیر ساخت:
#! / bin / bash
# while-count: نمایش یک سری اعداد count=1
در حالی که [[ $count -le 5 ]]; echo $count count=$((count + 1)) را انجام دهید
انجام شده
پژواک "تمام شد."
#! / bin / bash
# while-count: نمایش یک سری اعداد count=1
در حالی که [[ $count -le 5 ]]; echo $count count=$((count + 1)) را انجام دهید
انجام شده
پژواک "تمام شد."
هنگام اجرا، این اسکریپت موارد زیر را نمایش می دهد:
[me@linuxbox ~]$ while-count
1
2
3
4
5
تمام شده.
[me@linuxbox ~]$ while-count
1
2
3
4
5
تمام شده.
نحو از در حین دستور این است:
در حین دستورات; انجام دادن دستورات; انجام شده
پسندیدن if, در حین وضعیت خروج از لیستی از دستورات را ارزیابی می کند. تا زمانی که وضعیت خروج صفر باشد، دستورات داخل حلقه را انجام می دهد. در اسکریپت بالا، متغیر تعداد دفعات مشاهده ایجاد می شود و مقدار اولیه 1 به آن اختصاص می یابد در حین فرمان وضعیت خروجی را ارزیابی می کند [[]] دستور مرکب تا زمانی که [[]] فرمان وضعیت خروجی صفر را برمی گرداند، دستورات درون حلقه اجرا می شوند. در پایان هر چرخه، [[]] فرمان تکرار می شود پس از پنج بار تکرار حلقه، مقدار تعداد دفعات مشاهده به 6 افزایش یافته است [[]] فرمان دیگر وضعیت خروج صفر را برنمیگرداند و حلقه خاتمه مییابد. برنامه با عبارت بعدی زیر حلقه ادامه می یابد.
ما می توانیم از a استفاده کنیم حلقه در حالی که برای بهبود منوی خواندن برنامه از فصل قبل:
#! / bin / bash
# while-menu: یک برنامه اطلاعات سیستم مبتنی بر منو
#! / bin / bash
# while-menu: یک برنامه اطلاعات سیستم مبتنی بر منو
تاخیر=3 # تعداد ثانیه برای نمایش نتایج
در حالی که [[ $REPLY != 0 ]]; انجام دادن
واضح
گربه <<- _EOF_
لطفا انتخاب کنید:
1. نمایش اطلاعات سیستم
2. فضای دیسک را نمایش دهید
3. نمایش استفاده از فضای خانه
0. ترک کنید
_EOF_
خواندن -p "انتخاب را وارد کنید [0-3] >"
اگر [[ $REPLY =~ ^[0-3]$ ]]؛ سپس اگر [[ $REPLY == 1 ]]; سپس
بازتاب "Hostname: $HOSTNAME" uptime
خواب $DELAY
fi
اگر [[ $REPLY == 2 ]]؛ سپس df -h
خواب $DELAY
fi
اگر [[ $REPLY == 3 ]]؛ سپس
اگر [[ $(id -u) -eq 0 ]]; سپس
echo "استفاده از فضای خانه (همه کاربران)" du -sh /home/*
دیگر
echo "استفاده از فضای خانه ($USER)" du -sh $HOME
fi
خواب $DELAY
fi
دیگر
echo "ورود نامعتبر."
خواب $DELAY
fi
انجام شده
echo "برنامه پایان یافت."
تاخیر=3 # تعداد ثانیه برای نمایش نتایج
در حالی که [[ $REPLY != 0 ]]; انجام دادن
واضح
گربه <<- _EOF_
لطفا انتخاب کنید:
1. نمایش اطلاعات سیستم
2. فضای دیسک را نمایش دهید
3. نمایش استفاده از فضای خانه
0. ترک کنید
_EOF_
خواندن -p "انتخاب را وارد کنید [0-3] >"
اگر [[ $REPLY =~ ^[0-3]$ ]]؛ سپس اگر [[ $REPLY == 1 ]]; سپس
بازتاب "Hostname: $HOSTNAME" uptime
خواب $DELAY
fi
اگر [[ $REPLY == 2 ]]؛ سپس df -h
خواب $DELAY
fi
اگر [[ $REPLY == 3 ]]؛ سپس
اگر [[ $(id -u) -eq 0 ]]; سپس
echo "استفاده از فضای خانه (همه کاربران)" du -sh /home/*
دیگر
echo "استفاده از فضای خانه ($USER)" du -sh $HOME
fi
خواب $DELAY
fi
دیگر
echo "ورود نامعتبر."
خواب $DELAY
fi
انجام شده
echo "برنامه پایان یافت."
با قرار دادن منو در یک حلقه while، میتوانیم برنامه را بعد از هر انتخاب دوباره نمایش منو تکرار کنیم. حلقه تا زمانی که ادامه دارد پاسخ برابر "0" نیست و منو دوباره نمایش داده می شود و به کاربر این فرصت را می دهد تا انتخاب دیگری انجام دهد. در پایان هر اقدام، الف خواب دستور اجرا می شود بنابراین برنامه برای چند ثانیه مکث می کند تا قبل از پاک شدن صفحه و نمایش مجدد منو، نتایج انتخاب دیده شود. یک بار پاسخ برابر با "0" است، که نشان دهنده انتخاب "خروج" است،
حلقه خاتمه می یابد و اجرا با خط زیر ادامه می یابد انجام شده.