حلقة Bash 'while': البرنامج التعليمي والأمثلة

استخدام حلقة "while" في البرمجة النصية Bash للتكرار على الأوامر.

Bash (Bourne Again Shell) هو موجه أوامر shell ولغة برمجة نصية في أنظمة تشغيل GNU / Linux. إنه الغلاف الافتراضي لمعظم توزيعات Linux.

مثل معظم لغات البرمجة النصية ، يوفر Bash تراكيب حلقية لتكرار مهمة مماثلة عدة مرات. في هذه المقالة سوف نتعلم كيفية استخدام في حين حلقة في باش.

مقدمة

ال في حين يتم استخدام حلقة في Bash لتنفيذ الأمر (الأوامر) (الأوامر المنفذة) عدة مرات بناءً على إخراج أمر (أوامر) آخر (أوامر الشرط). ستستمر الأوامر المنفذة في العمل حتى يتم تشغيل أمر الشرط بنجاح (على سبيل المثال ، إرجاع الحالة 0. أي أمر في Linux يُرجع القيمة 0 للنجاح وعددًا صحيحًا غير الصفر للفشل).

إذا كانت هناك أوامر شرطية متعددة ، فإن العبارة تأخذ في الاعتبار حالة الأمر الأخير في القائمة فقط ، أي ، يتم تنفيذ الحلقة حتى يتم تشغيل آخر أمر في القائمة بنجاح.

النحو العام

الصيغة العامة لـ في حين الحلقة في Bash هي:

أثناء القيام به

ستستمر قائمة أوامر التنفيذ في العمل حتى يتم تشغيل آخر أمر في قائمة أوامر الشرط بنجاح وينتهي بالحالة 0. في التكرار ، عندما يفشل أمر الشرط الأخير ، تخرج الحلقة.

يمكن للمستخدم تحديد أي ملف قابل للتنفيذ في قوائم الأوامر. يمكن أن تكون برامج Linux قياسية أو برامج مستخدم مخصصة أو نصوص. يجب أن يكون كل أمر إما في سطر جديد أو مفصولاً بفاصلة منقوطة في نفس السطر.

دعونا نرى أمثلة قليلة.

التكرار حتى يكون للمتغير قيمة معينة: الحلقة التالية تنفذ حتى قيمة المتغير x لا يساوي 10.

x = 0 أثناء إجراء [[$ x -ne 10]] صدى $ x ((x ++))

في كل تكرار ، نتحقق مما إذا كانت قيمة x تساوي 10. يتم التحقق من القيمة باستخدام اختبار يأمر. [[ تعبير ]] هو بناء الجملة لأمر الاختبار (انظر اختبار الرجل). هنا لأننا نستخدم ملف -واحد عامل التشغيل (الذي يرمز إلى "لا يساوي") ، يُرجع أمر الاختبار 0 ، أي النجاح ، إذا كانت قيمة x ليست 10 ، ويعيد قيمة غير صفرية ، أي الفشل إذا كانت قيمة x تساوي 10.

ثم داخل القيام به نطبع قيمة x ونزيدها. بمجرد أن تكون قيمة x هي 10 ، يُرجع أمر الاختبار حالة غير صفرية ، وتخرج الحلقة.

ملحوظة: يجب تهيئة متغير الفهرس الذي سيتم استخدامه في حلقة while إما قبل حلقة while أو في أوامر الشرط ، على عكس حلقة for ، والتي تمكن من تهيئة متغير ضمنيًا.

بأوامر شرطية متعددة: الحلقة التالية تنشئ 5 دلائل مسماة dir0، dir1، ....

z = 0 while echo "قائمة الملفات:" ls -l [[$ z -ne 5]] do echo "إنشاء dir $ z ..." mkdir dir $ z ((z ++)) تم

الأوامر الأولى صدى "قائمة الملفات:" و ls -l ستنفذ مرة واحدة بالكامل ؛ نجاحهم أو فشلهم ليس له أي تأثير على الإطلاق على المدة التي ستستمر فيها الحلقة.

ثم سيتم تنفيذ أمر الاختبار للتحقق من قيمة المتغير z. حتى لا تكون قيمة z هي 5 ، يُرجع أمر الاختبار حالة النجاح ، وبالتالي تستمر الحلقة في العمل. أوامر الشرط والأوامر المنفذة تستمر في العمل بالترتيب. هنا ، لكل تكرار ، سيتم أولاً تشغيل الأمر echo والأمر ls بشرط ثم يتحقق أمر الشرط الثالث من قيمة z. إذا لم يكن 5 ، يدخل الحلقة وينفذ الأوامر المعطاة.

استراحة ومتابعة

بيان كسر للخروج المشروط

يمكننا أيضًا استخدام العبارة الشرطية إذا داخل الحلقة. ال إذا يمكن استخدام العبارة مع فترة راحة البيان ، للخروج الشرطي من الحلقة.

x = 0 أثناء إجراء [[$ x -ne 10]] إذا تم تنفيذ [[$ x -eq 5]] كسر fi echo $ x ((x ++))

حلقة while أعلاه ستطبع الأرقام من 0 إلى 4. ثم عندما تكون قيمة i هي 5 ، ستخرج من الحلقة. هذا ذو فائدة خاصة عندما يتم الخروج من حلقة عندما يعطي الأمر مخرجات محددة.

تابع العبارة لتخطي التكرار بشروط

لدى Bash أيضًا ملف استمر العبارة ، لتخطي الجزء المتبقي من التكرار في حلقة إذا تم استيفاء شرط معين.

x = 0 أثناء تنفيذ [[$ x -ne 10]] إذا تم تنفيذ [[$ x -eq 5]] في echo $ x ((x ++))

الحلقة أعلاه ستطبع الأرقام من 0 إلى 10 ، باستثناء 5 ، لأنه أثناء التكرار س = 5 هناك تعليمة مستمرة ، والتي ستتخطى بقية الكود في الحلقة في البداية مع تكرار س = 6.

استخدام الحلقات: البرامج النصية وسطر الأوامر

يمكن استخدام صيغة الحلقة في Bash shell مباشرة أو من ملف نصي شل قابل للتنفيذ. مشابه ل ل و في حين حلقات ، مرة واحدة في حين يتم إدخال صيغة الحلقة على الغلاف ، وتستمر القشرة في المطالبة للسماح للمستخدم بمتابعة الأوامر المراد تكرارها.

وإلا يمكن للمستخدم حفظ هذا في ملف نصي وتنفيذ ملف البرنامج النصي.

ال #! / بن / باش في البداية يحدد المترجم الذي سيتم استخدامه عند تنفيذ الملف. على الرغم من أن Bash هي الصدفة الأكثر استخدامًا في الوقت الحاضر ، إلا أن بعض المستخدمين يفضلون الصدفات مثل zsh، والتي يجب تحديدها مكان bash في بداية هذا الملف.

لإعطاء أذونات التنفيذ لهذا الملف ، قم بتشغيل:

chmod + x test.sh

أخيرا، لتنفيذ الملف، يركض:

./test.sh

استنتاج

ال في حين حلقة ، على غرار ل و حتى الحلقات هي ميزة مهمة في البرمجة النصية Bash. while loop لها استخدام مشابه لحلقة until ، إلا أنها تُستخدم لتشغيل أوامر / برامج بديلة عند نجاح برنامج معين. غالبًا ما يجد هذا فائدته في البرامج النصية للشبكات المتقدمة ونصوص صيانة النظام وما إلى ذلك.