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

الأوامر والنُسخ والأمثلة

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

ملف البرنامج النصي هو مجرد ملف نصي ، عادة مع ملحق الملف .SH ، الذي يحتوي على سلسلة من التعليمات التي يمكن تنفيذها أيضا من سطر الأوامر ( shell ).

في حين أمثلة حلقة

فيما يلي مثال على حلقة في حين. عند التنفيذ ، سيقوم ملف البرنامج النصي هذا بطباعة الأرقام من 1 إلى 9 على الشاشة. يمنحك البيان while مرونة أكبر في تحديد شرط الإنهاء من حلقة for-loop .

#! / bin / bash count = 1 while [$ count -le 9] do echo "$ count" sleep 1 ((count ++)) done

على سبيل المثال ، يمكنك جعل البرنامج النصي السابق حلقة لا نهائية عن طريق حذف العبارة الزيادة "((++))":

#! / bin / bash count = 1 while [$ count -le 9] do echo "$ count" sleep 1 done

تقوم العبارة "sleep 1" بإيقاف التنفيذ لمدة ثانية واحدة في كل تكرار. استخدم اختصار لوحة المفاتيح Ctrl + C لإنهاء العملية.

يمكنك أيضًا إنشاء حلقة لا نهائية من خلال وضع علامة النقطتين كشرط:

#! / bin / bash count = 1 while: do echo "$ count" sleep 1 ((count ++)) done

لاستخدام شروط متعددة في حلقة while ، يجب عليك استخدام تدرج قوس مزدوج مربع:

count = 1 done = 0 بينما [[$ count -le 9] && [$ done == 0]] do echo "$ count" sleep 1 ((count ++)) if [$ count == 5]؛ ثم $ done = 1 fi تمت

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

تعني "&&" المنطقية "و" و "||" يعني منطقية "أو".

وهناك تدوين بديل للاحتفالات "و" و "أو" في الشروط هو "-a" و "-o" مع قوسين مربعين. الشرط أعلاه:

[[$ count -le 9] && [$ done == 0]]

... يمكن إعادة كتابتها على النحو التالي:

[$ count -le 9] -a [$ done == 0]

عادة ما يتم قراءة ملف نصي مع حلقة في حين. في المثال التالي ، يقرأ البرنامج النصي bash محتويات سطر بواسطة سطر من ملف يسمى "inventory.txt:"

FILE = inventory.txt exec 6

السطر الأول يعيّن اسم ملف الإدخال إلى متغير "FILE". يحفظ السطر الثاني "الإدخال القياسي" في واصف الملف "6" (يمكن أن يكون أي قيمة بين 3 و 9). يتم ذلك بحيث يمكن استعادة "الإدخال القياسي" إلى واصف الملف "0" في نهاية البرنامج النصي (راجع العبارة "exec 0 في السطر الثالث يتم تعيين ملف الإدخال إلى واصف الملف" 0 ، "الذي يتم استخدامه بالنسبة إلى الإدخال القياسي ، فإن عبارة "read" تقرأ بعد ذلك سطرًا من الملف في كل تكرار وتقوم بتعيينه للمتغير "line1".

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

count = 1 done = 0 بينما [$ count -le 9] echo sleep "$ count" sleep 1 ((count ++)) if [$ count == 5] then break ve done echo Finished

يتخطى بيان الفشل تنفيذ البرنامج إلى النهاية أثناء التكرار وينفذ أي عبارات تالية. في هذه الحالة ، فإن العبارة "صدى انتهى".

من ناحية أخرى ، يتخطى بيان المتابعة باقي بقية عبارة "التكرار" أثناء التكرار الحالي ويقفز مباشرةً إلى التكرار التالي:

count = 1 done = 0 بينما [$ count -le 9] تنام 1 ((count ++)) إذا كان [$ count == 5] ثم تابع fi echo "$ count" done echo تم الانتهاء منه

في هذه الحالة ، يتم تنفيذ العبارة "متابعة" عندما يصل المتغير "count" إلى 5. وهذا يعني أن العبارة التالية (echo "$ count") لا يتم تنفيذها في هذا التكرار (عندما تكون قيمة "count" هي 5).