كيفية استخدام BASH للحلقة



جرب أداة القضاء على المشاكل

تتضمن إحدى الحيل الأساسية عند تأليف نصوص bash إنشاء حلقة بحيث يمكنك تنفيذ مهمة معينة تلقائيًا عدة مرات. في النهاية ، ستصل الحلقة إلى حالة اختبار محددة مسبقًا وتتوقف فجأة عن التنفيذ. ستعمل حلقات كهذه بشكل مثالي في bash على Linux و macOS بالإضافة إلى bash shell داخل Windows 10 وحتى الأصداف المختلفة في FreeBSD. وبطبيعة الحال ، يمكنك كتابة أي أمر تفضله في أي حلقة والحفاظ على استمرار أي عملية بأي قدر من الوقت تريده. بينما سنكتب بعض الحلقات البسيطة للغاية ، يمكنك استخدام هذه المهارات لتأليف أي نوع من النصوص البرمجية التي تريدها.



هناك العديد من الطرق لبدء كتابة نص برمجي ، ولكن بالنسبة لهذه المناقشة ، سنفترض أنك فتحت موجه أوامر إما عن طريق البحث عن Terminal في Dash ، أو بالنقر فوقه في قوائم KDE أو MATE أو LX أو Whisker أو بالضغط باستمرار على Ctrl و Alt و T في نفس الوقت. على الرغم من أننا سنناقش vi / vim و nano كمحررين ، فإن مسألة أي محرر يجب استخدامه هي مسألة شخصية تمامًا ويمكنك التعامل مع أي شيء تشعر بالراحة معه.



الطريقة 1: حتى الحلقة

ربما تكون الحلقة حتى الحلقة الأساسية في bash. سيستمر في تنفيذ الأوامر حتى يصبح شرط الاختبار الذي قمت بتعيينه صحيحًا. سنفترض أنك استخدمت إما nano أو vi لفتح ملف غير موجود يسمى until.sh وجاهز لإدراج نص جديد فيه. سنقوم فقط بعمل شيء يصل عدده إلى 20 في محطتك لجعل هذا الأمر سهلاً في البداية.



ابدأ بكتابة ما يلي:

#!/bin/bash

ن = 0



حتى [$ n -gt 20]

فعل

صدى $ n

((n ++))

منجز

إذا كنت تستخدم nano ، فاحفظه بالضغط باستمرار على Ctrl ثم الضغط على O وأخيراً X للخروج. سيرغب مستخدمو vi في الضغط على مفتاح escape ، ثم اكتب: wq للحفظ والإنهاء.

النوع التالي chmod + x حتى حلقة في الموجه لجعله قابلاً للتنفيذ ثم اكتب ./untilLoop لتشغيله. بمجرد تشغيلها ، ستستمر الحلقة في طباعة أرقام جديدة على جهازك حتى يصل المتغير n إلى 20.

بالمناسبة ، يخبر السطر الأول بيئتك بالهيكل الذي يجب تحميله عند العمل مع هذه البرامج النصية. ينصح بعض المبرمجين باستخدام #! / bin / sh فقط على الإطلاق للتأكد من أن النص البرمجي يلتزم بمعايير POSIX معينة ، ولكن يجب ألا تواجه هذه البرامج النصية البسيطة أي مشكلة في تشغيل الغالبية العظمى من الأنظمة الحديثة.

الطريقة 2: The for Loop

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

اكتب إما نانو لوب أو نحن لوب في موجه الأوامر وابدأ في إدخال هذا البرنامج النصي التالي. سيتعين على مستخدمي vi الدخول في وضع الإدراج قبل القيام بذلك.

#!/bin/bash

unices = 'GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix'

ليونيكس في $ unices

فعل

صدى دولار يونكس

منجز

احفظ الملف مرة أخرى باستخدام طريقة Ctrl + O ثم Ctrl + X في nano أو Esc ثم: wq في vi قبل إصدار الأمر chmod + x forLoop لجعلها قابلة للتنفيذ. بمجرد الانتهاء ، قم بتشغيله عن طريق الكتابة ./لحلقة في موجه. تجبر الحلقة for أمر echo على العمل على كل عنصر في متغير unices بدوره. يمكنك ، مرة أخرى ، استبدال تلك القائمة بأي وسيطة واستبدال الصدى بأي أمر لأتمتة العمليات الطويلة.

الطريقة الثالثة: حلقة الوقت

ابدأ في تحرير ملف ثالث يسمى whileLoop باستخدام nano أو vi أو أي محرر آخر ترغب في استخدامه. إذا كنت تفضل استخدام محرر نصوص رسومي ، فيمكنك فعل ذلك أيضًا مع أي من هذه المشاريع طالما أنك تتأكد من وضع الملف في نفس الدليل الذي تعمل به من داخل موجه الأوامر .

داخل هذا الملف ، سترغب في إضافة الأسطر:

#!/bin/bash

ن = 0

بينما [$ n -le 20]

فعل

صدى $ n

((n ++))

منجز

احفظ الملف بنفس الطريقة التي حفظت بها الملفات الأخرى ثم اخرج من محرر النصوص الخاص بك. بمجرد الخروج ، قم بإصدار الأمر chmod + x whileLoop للسماح لك بتنفيذه ثم تشغيله ./حائط اللوب لتشغيله. سترى نفس الإخراج الذي خرج من البرنامج النصي حتى الحلقة من الطريقة الأولى حيث أنها تعد من 0 إلى 20 في جزء من الثانية على الأرجح.

هذا دليل ممتاز على حقيقة أن هناك أكثر من طريقة للقيام بالأشياء كلما كنت تعمل مع الحلقات بهذه الطريقة. على الرغم من عدم وجود طريقة خاطئة من الناحية الفنية للقيام بذلك ، فمن المحتمل أن تصادف مؤلفي النصوص الذين يدعون أنه يجب عليك كتابة نصوصك بطريقة أقرب إلى الطريقة التي تعمل بها لغة البرمجة C أو بدلاً من ذلك ، قد يقترح البعض الآخر أنه لا ينبغي عليك القيام بذلك. بصراحة ، ربما توجد العديد من الطرق الصحيحة لحل المشكلة.

لا تتردد في حذف نصوصك بمجرد الانتهاء من التدرب عليها.

3 دقائق للقراءة