نحوه نوشتن Bash WHILE-Loops

دستورات، نحو و مثالها

شما می توانید یک ترتیب از دستورات را با نوشتن آنها در یک فایل اسکریپت و سپس اجرای آن، اجرا کنید.

یک فایل اسکریپت به سادگی فایل متنی است، معمولا با فرمت فایل .SH، که حاوی دستورالعمل هایی است که می تواند از خط فرمان ( پوسته ) نیز اجرا شود.

در حالی که نمونه های حلقه

در زیر یک نمونه از یک حلقه در حال اجرا است. هنگام اجرای این فایل اسکریپت از شماره های 1 تا 9 روی صفحه نمایش داده می شود. بیانیه ای که در حال گذر است، انعطاف پذیری بیشتری را برای تعیین شرایط خاتمه می دهد تا از حلقه برای حلقه .

#! / bin / bash count = 1 در حالی که [$ count -le 9] echo "$ count" sleep 1 ((count ++)) done

برای مثال، می توانید اسکریپت قبلی را یک حلقه بی نهایت با حذف عبارت افزایش ((count ++)):

#! / bin / bash count = 1 در حالی که [$ count -le 9] echo "$ count" sleep 1 done

بیانیه "sleep 1" اعدام را برای 1 ثانیه در هر تکرار متوقف می کند. برای خاتمه دادن به فرآیند، از کلید میانبر Ctrl + C استفاده کنید.

شما همچنین می توانید با قرار دادن کولون به عنوان شرطی یک حلقه بی نهایت ایجاد کنید:

#! / bin / bash count = 1 در حالی که: echo "$ count" sleep 1 ((count ++)) done

برای استفاده از چندین شرایط در حلقه while-you، شما باید از علامت براکت دو ستون استفاده کنید:

count = 1 done = 0 در حالی که [[$ count -le 9] && [$ done == 0]] echo "$ count" sleep 1 ((count ++)) اگر [$ count == 5]؛ سپس $ done = 1 انجام می شود

در این اسکریپت، متغیر "done" به 0 شروع شده و سپس مقدار count برابر با 1 تنظیم می شود. وضعیت loop بیان می کند که حلقه زمانی ادامه خواهد یافت تا زمانی که "count" کمتر از 9 باشد و "done" برابر است به صفر بنابراین حلقه ها هنگامی که تعداد برابر 5 است، خارج می شوند.

"&&" به معنای منطقی "و" و "||" به معنای منطقی "یا" است.

نماد جایگزین برای conjunctions "و" و "یا" در شرایط "-a" و "-o" با براکت تک محور است. شرایط فوق:

[[$ count -le 9] && [$ done == 0]]

... می تواند بازنویسی شود:

[$ count -le 9] -a [$ done == 0]

خواندن یک فایل متنی معمولا با یک حلقه زمانی انجام می شود. در مثال زیر، اسکریپ bash خط محتوی را به صورت خطی از یک فایل به نام "inventory.txt:" خواند.

FILE = inventory.txt exec 6

خط اول نام فایل ورودی را به متغیر "FILE" اختصاص می دهد. خط دوم صرفه جویی در "ورودی استاندارد" را در توصیفگر فایل "6" (می تواند هر مقدار بین 3 و 9). این کار به این صورت انجام می شود که "ورودی استاندارد" می تواند به توصیفگر فایل "0" در انتهای اسکریپت بازگردد (بیانیه "exec 0 را ببینید در خط 3 فایل ورودی به توصیفگر فایل" 0 "اختصاص داده شده است، که استفاده می شود برای ورودی استاندارد. دستور "خواندن" سپس یک خط از فایل را در هر تکرار می خواند و آن را به متغیر "line1" اختصاص می دهد.

به منظور جلوگیری از زود هنگام یک حلقه زمانی، می توانید از دستور break استفاده کنید:

count = 1 done = 0 در حالی که [$ count -le 9] echo "$ count" sleep 1 ((count ++)) اگر [$ count == 5] سپس شکست را انجام داد echo Finished

بیانیه شکستن اجرای برنامه را به پایان می دهد در حالی که حلقه و هر اظهارنامه ای را که زیر آن اجرا می کند، اجرا می کند. در این مورد، عبارت "echo Finished."

از سوی دیگر، بیانیه ادامه، تنها بقیه تکرار حلقه در حال اجرا را تکرار می کند و به طور مستقیم به تکرار بعدی می رود:

count = 1 done = 0 در حالی که [$ count -le 9] خوابید 1 ((count ++)) اگر [$ count == 5] سپس ادامه دهید فاکتور "$ count" انجام شده echo Finished

در این حالت بیانیه «ادامه» هنگامی اجرا میشود که متغیر «count» به 5 میرسد. این به این معنی است که عبارت بعدی (echo "$ count") بر روی این تکرار اجرا نمیشود (زمانی که مقدار "count" 5 است).