Bash 'For' Loop: دروس وأمثلة

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

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

مقدمة

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

النحو العام

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

في القيام ... ... القيام به

هنا ، هو متغير Bash ، والذي يجب أن يكون اسمًا صالحًا لمتغير shell Linux ، أي أن الاسم يحتوي على مجموعة من الأحرف (az ، AZ) والأرقام (0-9) والشرطة السفلية (_) ويجب أن يبدأ إما بحرف أو شرطة سفلية.

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

يجب وضع أي أمر (أوامر) يتم تنفيذه داخل ملف القيام به منع.

دعونا نرى بعض الأمثلة البسيطة.

التكرار على نطاق من القيم الصحيحة: الكود التالي ينشئ أدلة باسم dir1، dir2، dir3 upto dir10.

لأني في {1..10} فعل mkdir dir $ فعلت

التكرار على قائمة القيم الثابتة: يطبع الكود التالي كل سلسلة أو عدد صحيح في القائمة الثابتة المحددة.

لأني في مرحبا 1 2 3 وداعا! هل صدى $ فعلت

التكرار عند إخراج الأمر: حلقات التعليمات البرمجية التالية على إخراج ls ويطبع اسم كل ملف بالتنسيق المحدد.

لأني في "ls` do echo" تم إنجاز "Filename is $ i"

بناء الجملة القائم على التعبير

بناء جملة قائم على التعبير مشابه للغة البرمجة C ممكن أيضًا في Bash:

لـ ((Expression 1؛ Expression 2؛ Expression 3)) تفعل ... ... تم

هنا، التعبير 1 هي تهيئة متغير (متغيرات) الفهرس. التعبير 2 هي الحالة التي يجب فيها الخروج من الحلقة ؛ يتم التحقق من هذا الشرط في كل تكرار. التعبير 3 يحدد الزيادة / الإنقاص / التعديل في قيمة متغير (متغيرات) الفهرس

المثال التالي يطبع القيم من 0 إلى 4:

من أجل ((i = 0 ؛ i <5 ؛ i ++)) نفذ صدى $ لقد فعلت

المثال التالي ينشئ حلقة لا نهائية ، حيث لم يتم تحديد أي تعبيرات:

من أجل ((؛)) قم بعمل الصدى "اضغط على Ctrl-C للإيقاف"

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

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

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

لـ ((i = 0؛ i <10؛ i ++)) افعل إذا [[$ i -eq 5]] ثم كسر else echo $ i؛ انتهى فاي

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

للملف في `ls` do flen =` wc -c $ file` إذا [["$ flen" = "0 $ file"]] ثم صدى "$ file is blank" فاصل أو echo $ flen fi تم 

الامر مرحاض-ج يطبع عدد الأسطر في الملف . يطبعها في التنسيق ، فمثلا، 10 test.txt. نحن نخرج من الحلقة عندما يكون عدد الأسطر 0 ، أي ملف فارغ.

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

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

لـ ((i = 0؛ i <10؛ i ++)) افعل إذا [[$ i -eq 5]] ثم تابع fi echo $ i؛ فعله

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

في المثال التالي ، نطبع عدد الأسطر في ملف ، وسوف نقوم بتكرار معين استمر إذا كان دليلاً وليس ملفًا.

للملف في `ls` افعل إذا [[-d $ file]] ثم أكمل fi wc -c" $ file "

[[-d $ ملف]] يتحقق مما إذا كان الملف عبارة عن دليل. إذا كان الأمر كذلك ، فسننتقل إلى الملف التالي ، أي التكرار التالي. إذا لم يكن دليلًا ، فسنطبع عدد الأسطر في الملف باستخدام مرحاض الأمر ، كما هو موضح سابقًا أيضًا.

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

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

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

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

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

chmod + x test.sh

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

./test.sh

استنتاج

ال ل loop in Bash هي ميزة بسيطة جدًا ولكنها تستخدم في كل أنواع سيناريوهات البرمجة النصية المعقدة تقريبًا. تعلم أنه يقطع شوطًا طويلاً سواء كنت مستخدمًا منتظمًا أو متقدمًا لنظام Linux ، أو بدأت في تعلم التشغيل الآلي لمهام إدارة النظام و DevOps.