كيفية كتابة باش "ل" حلقة

كيفية استخدام حلقة BASH "for" في برامج نصية shell

BASH (التي تعني Bourne Again Shell) هي لغة برمجة تستخدمها معظم أنظمة التشغيل Linux و UNIX.

يمكنك تشغيل أوامر BASH داخل نافذة طرفية واحدة بعد الأخرى أو يمكنك إضافة الأوامر إلى ملف نصي لإنتاج نص برمجي shell.

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

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

جزء أساسي من أي لغة برمجة وبرمجة هي القدرة على تشغيل نفس الكود مراراً وتكراراً.

هناك عدد من الطرق لتكرار الرمز (المعروف أيضًا باسم الحلقات). في هذا الدليل ، سيتم عرض كيفية كتابة حلقة "من أجل".

تكرار حلقة for a مقطع معين من التعليمات البرمجية مراراً وتكراراً. فهي مفيدة بحيث يمكن أن تستمر سلسلة من الأوامر في العمل حتى يتم استيفاء شرط معين ، وبعد ذلك تتوقف.

في هذا الدليل ، سيتم عرض خمس طرق لاستخدام حلقة for في برنامج نصي BASH.

قبل البدء

قبل البدء بأمثلة الحلقات ، عليك فتح نافذة طرفية واتباع الخطوات التالية:

  1. أدخل مخطوطات mkdir ( تعلم المزيد عن mkdir هنا )
  2. أدخل برامج نصية cd (يؤدي هذا إلى تغيير الدليل إلى نصوص برمجية )
  3. أدخل nano examplen.sh (حيث n هو المثال الذي تعمل فيه)
  4. أدخل النص
  5. اضغط على CTRL + O للحفظ و CTRL + X للخروج
  6. تشغيل bash examplen.sh (مرة أخرى ، مع n المثال الذي تعمل فيه)

كيفية حلقة عبر قائمة

#! / بن / سحق
للرقم في 1 2 3 4 5
فعل
صدى $ رقم
فعله
الخروج 0

تختلف طريقة BASH في استخدام الحلقات "for" إلى حد ما عن الطريقة التي تتعامل بها معظم لغات البرمجة واللغات النصية الأخرى مع "for". دعونا كسر البرنامج النصي ...

في BASH "for" قم بتكرار جميع ، يتم تنفيذ العبارات بين القيام والقيام مرة واحدة لكل عنصر في القائمة.

في المثال أعلاه ، القائمة هي كل ما يأتي بعد الكلمة في (أي 1 2 3 4 5).

في كل مرة يتم تكرار الحلقة ، يتم إدراج القيمة التالية في القائمة في المتغير المحدد بعد الكلمة "for" . في الحلقة السابقة ، يسمى المتغير الرقم .

يتم استخدام عبارة echo لعرض المعلومات على الشاشة.

لذلك ، يأخذ هذا المثال الأرقام من 1 إلى 5 ويخرجها واحدة تلو الأخرى إلى الشاشة:

كيفية حلقة بين البداية ونقطة النهاية

تتمثل المشكلة في المثال أعلاه في أنك إذا كنت تريد معالجة قائمة أكبر (من 1 إلى 500 مثلاً) ، فسيحتاج الأمر إلى كتابة الأعداد في كل الأعداد في المقام الأول.

هذا يقودنا إلى المثال الثاني الذي يوضح كيفية تحديد نقطة البداية والنهاية:

#! / بن / سحق
للرقم في {1..10}
فعل
صدى "رقم $"
فعله
الخروج 0

القواعد هي نفسها في الأساس. تشكل القيم بعد الكلمة " في" القائمة لتكرارها ويتم وضع كل قيمة في القائمة في المتغير (أي رقم) ، وفي كل مرة يتم تكرار الحلقة ، يتم تنفيذ العبارات بين القيام والقيام بها.

والفرق الرئيسي هو طريقة تشكيل القائمة. تشير الأقواس المتعرجة {} بشكل أساسي إلى نطاق ، والنطاق ، في هذه الحالة ، هو من 1 إلى 10 (تفصل النقطتان بداية ونهاية النطاق).

هذا المثال ، لذلك ، يتم تشغيل كل رقم بين 1 و 10 ويخرج الرقم إلى الشاشة كما يلي:

يمكن أن تكون نفس الحلقة مكتوبة بهذه الطريقة ، مع صيغة مطابقة للمثال الأول:

للرقم في 1 2 3 4 5 6 7 8 9 10

كيفية تخطي الأرقام في المدى

أظهر المثال السابق كيفية التكرار بين نقطة البداية ونقطة النهاية ، لذلك سنتناول الآن كيفية تخطي الأرقام في النطاق.

تخيل أنك تريد أن تتكرر بين 0 و 100 ، ولكن تظهر فقط كل رقم العاشر. يعرض البرنامج النصي التالي كيفية القيام بذلك فقط:

#! / بن / سحق
للرقم في {0..100..10}
فعل
صدى "رقم $"
فعله
الخروج 0

القواعد هي نفسها في الأساس. هناك قائمة ، ومتغير ، ومجموعة من العبارات التي يتعين القيام بها بين القيام به والقيام به . تبدو القائمة هذه المرة كما يلي: {0..100..10}.

الرقم الأول هو 0 والرقم النهائي هو 100. الرقم الثالث (10) هو عدد العناصر في القائمة التي سيتم تخطيها.

المثال أعلاه ، لذلك ، يعرض الإخراج التالي:

أكثر تقليدية تبحث عن حلقة

طريقة BASH للكتابة عن الحلقات غريبة قليلاً بالمقارنة مع لغات البرمجة الأخرى.

ومع ذلك ، يمكنك كتابة حلقة for في نمط مشابه للغة برمجة C ، كما يلي:

#! / بن / سحق
لـ ((رقم = 1 ؛ رقم <100 ؛ رقم ++))
{
إذا (($ number٪ 5 == 0))
ثم
echo "$ number is divisible by 5"
فاي
}
الخروج 0

تبدأ الحلقة عن طريق تعيين الرقم المتغير إلى 1 (رقم = 1 ). ستظل الحلقة متكررة بينما تكون قيمة الرقم أقل من 100 ( رقم <100 ). تتغير قيمة العدد بإضافة 1 إليه بعد كل تكرار ( رقم ++ ).

يتم تنفيذ كل شيء بين الأقواس المتعرجة من خلال كل تكرار للحلقة.

تقوم البتة بين الأقواس بالتحقق من قيمة الرقم ، وتقسمه إلى 5 ، وتقارن الباقي بصفر. إذا كان الباقي هو 0 ، فسيكون العدد قابلاً للقسمة على 5 ثم يتم عرضه على الشاشة.

فمثلا:

إذا كنت تريد تغيير حجم الخطوة للتكرار ، فيمكنك تعديل رقم القسم ++ ليكون number = number + 2 أو number = number + 5 أو number = number + 10 إلخ.

يمكن تقليل هذا العدد إلى + 2 أو رقم + = 5 .

مثال عملي

للحلقات يمكن أن تفعل أكثر من قوائم تكرار الأرقام. يمكنك في الواقع استخدام إخراج الأوامر الأخرى كقائمة.

يوضح المثال التالي كيفية تحويل الملفات الصوتية من MP3 إلى WAV :

#! / بن / سحق

القائمة في هذا المثال هي كل ملف بملحق .MP3 في المجلد الحالي والمتغير هو ملف .

يقوم الأمر mpg بتحويل ملف MP3 إلى WAV. ومع ذلك ، قد تحتاج إلى تثبيت هذا باستخدام مدير الحزم أولاً.