الأوامر والنُسخ والأمثلة
يمكنك تنفيذ سلسلة من الأوامر عن طريق كتابتها في ملف نصي ثم تشغيلها.
ملف البرنامج النصي هو مجرد ملف نصي ، عادة مع ملحق الملف .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).