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

استخدام حلقة "حتى" في نص Bash لتكرار الأمر (الأوامر).

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

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

مقدمة

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

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

النحو العام

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

حتى تفعل

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

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

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

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

x = 0 حتى [[$ x -eq 10]] يتم تنفيذ الصدى $ x ((x ++))

في كل تكرار ، نتحقق مما إذا كانت قيمة x تساوي 10. يتم التحقق من القيمة باستخدام اختبار يأمر. [[ تعبير ]] هو بناء الجملة لأمر الاختبار (انظر اختبار الرجل).

ثم داخل القيام به بل نطبع ببساطة قيمة x ونزيدها. تخرج الحلقة بمجرد نجاح أمر الشرط ، أي متى x دولار مساوي ل 10.

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

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

z = 0 حتى صدى "Hi" echo "Bye" [[$ z -eq 5]] نفذ الصدى "إنشاء dir $ z ..." mkdir dir $ z ((z ++)) تم

الأوامر الأولى صدى "Hi" و "صدى الصوت" سيتم تنفيذها مرة واحدة تمامًا ؛ نجاحهم أو فشلهم ليس له أي تأثير على الإطلاق على المدة التي ستستمر فيها الحلقة.

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

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

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

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

x = 0 حتى [[$ x -eq 10]] افعل إذا تم تنفيذ [[$ x -eq 5]] كسر fi echo $ x ((x ++))

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

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

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

x = 0 حتى [[$ x -eq 10]] افعل إذا تم تنفيذ [[$ x -eq 5]] في echo $ x ((x ++))

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

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

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

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

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

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

chmod + x test.sh

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

./test.sh

استنتاج

ال حتى loop هي ميزة مهمة أخرى في برمجة Bash النصية. لها أهمية خاصة في البرامج النصية المعقدة عندما يُتوقع أن تعيد مجموعة معينة من البرامج حالة الفشل ، ويتم تنفيذ بعض الأوامر الأخرى لتسجيل الفشل أو عرض الخطأ بالتفصيل أو ببساطة تنفيذ بعض البرامج البديلة.