"صايم" الحلقة الاولى: باش تعرف راسك - Episode1
جدول المحتويات:
- باش القياسية للحلقة
- حلقة على الاوتار
- حلقة فوق مجموعة الأرقام
- حلقة فوق عناصر مجموعة
- باش على غرار C للحلقة
- كسر ومتابعة البيانات
- بيان استراحة
- متابعة البيان
- باش لأمثلة الحلقة
- إعادة تسمية الملفات ذات المسافات في اسم الملف
- تغيير امتداد الملف
- استنتاج
الحلقات هي واحدة من المفاهيم الأساسية للغات البرمجة. تكون الحلقات سهلة الاستخدام عندما تريد تشغيل سلسلة من الأوامر مرارًا وتكرارًا حتى يتم الوصول إلى شرط معين.
في لغات البرمجة النصية مثل Bash ، تعد الحلقات مفيدة لأتمتة المهام المتكررة.
هناك ثلاثة تصميمات أساسية للحلقات في البرمجة النصية Bash ، للحلقة ، أثناء الحلقة ، وحتى الحلقة.
في هذا البرنامج التعليمي ، سنغطي أساسيات الحلقات في Bash. سنبين لك أيضًا كيفية استخدام الكسر ومتابعة البيانات لتغيير تدفق الحلقة.
باش القياسية للحلقة
حلقة for يتكرر على قائمة من العناصر وتنفيذ مجموعة معينة من الأوامر.
تأخذ Bash for loop النموذج التالي:
for item in do done
يمكن أن تكون القائمة عبارة عن سلسلة من السلاسل مفصولة بمسافات ، ومجموعة من الأرقام ، وإخراج أمر ، ومصفوفة ، وما إلى ذلك.
حلقة على الاوتار
في المثال أدناه ، ستكرر الحلقة فوق كل عنصر في قائمة السلاسل ، وسيتم تعيين
element
المتغير على
element
الحالي.
for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done
سوف تنتج الحلقة المخرجات التالية:
Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium
حلقة فوق مجموعة الأرقام
يمكنك استخدام تعبير التسلسل لتحديد نطاق من الأرقام أو الأحرف عن طريق تحديد بداية ونقطة نهاية النطاق. يأخذ تعبير التسلسل بالشكل التالي:
{START..END}
في المثال أدناه ، ستكرر الحلقة من خلال جميع الأرقام من 0 إلى 3.
for i in {0..3} do echo "Number: $i" done
Number: 0 Number: 1 Number: 2 Number: 3
بدءًا من Bash 4 ، من الممكن أيضًا تحديد زيادة عند استخدام النطاقات. يأخذ التعبير الشكل التالي:
{START..END..INCREMENT}
for i in {0..20..5} do echo "Number: $i" done
Number: 0 Number: 5 Number: 10 Number: 15 Number: 20
حلقة فوق عناصر مجموعة
يمكنك أيضًا استخدام حلقة for للتكرار عبر مجموعة من العناصر:
في المثال أدناه ، نقوم بتعريف
BOOKS
لصفيف ونكرر على كل عنصر من عناصر المصفوفة.
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done
Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby
باش على غرار C للحلقة
يأخذ بناء جملة النمط C للحلقة الشكل التالي:
for ((INITIALIZATION; TEST; STEP)) do done
يتم تنفيذ جزء
INITIALIZATION
مرة واحدة فقط عند بدء الحلقة. ثم ، يتم تقييم الجزء
TEST
. إذا كان خطأ ، يتم إنهاء حلقة for. إذا كان
TEST
صحيحًا ، فسيتم تنفيذ الأوامر الموجودة داخل النص الخاص بـ حلقة ويتم تحديث الجزء
STEP
.
في التعليمة البرمجية التالية ، يتم تشغيل الحلقة عن طريق تهيئة
i = 0
، ثم قبل كل تكرار يتم التحقق مما إذا كانت
i ≤ 10
. إذا كان هذا صحيحًا ، فإنه يطبع القيمة الحالية لـ
i
و
i
بمقدار 1 (
i++
) وإلا يتم إنهاء الحلقة.
for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done
ستكرر الحلقة 1001 مرة وتنتج المخرجات التالية:
Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000
كسر ومتابعة البيانات
يمكن استخدام عبارات الفاصل والمتابعة للتحكم في تنفيذ الحلقة.
بيان استراحة
العبارة فاصل إنهاء الحلقة الحالية وتمرير التحكم البرنامج إلى العبارة التي تتبع العبارة إنهاء. وعادة ما يستخدم لإنهاء الحلقة عند استيفاء شرط معين.
في المثال التالي ، نستخدم عبارة if لإنهاء تنفيذ الحلقة بمجرد أن يكون العنصر التكراري الحالي مساوياً لـ "Lithium".
for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'
Element: Hydrogen Element: Helium All Done!
متابعة البيان
العبارة متابعة إنهاء التكرار الحالي من حلقة وتمرير التحكم في البرنامج إلى التكرار التالي من الحلقة.
في المثال التالي ، نقوم بالتكرار من خلال مجموعة من الأرقام وعندما يكون العنصر التكراري الحالي مساويًا لـ "2" ، يتسبب بيان المتابعة في عودة التنفيذ إلى بداية الحلقة ومتابعة التكرار التالي.
for i in {1..5}; do if]; then continue fi echo "Number: $i" done
Number: 1 Number: 3 Number: 4 Number: 5
باش لأمثلة الحلقة
إعادة تسمية الملفات ذات المسافات في اسم الملف
يوضح المثال التالي كيفية استخدام Bash for loop لإعادة تسمية كافة الملفات الموجودة في الدليل الحالي بمسافة في أسمائها عن طريق استبدال المسافة أسفل السطر السفلي.
for file in *\ *; do mv "$file" "${file// /_}" done
دعنا نقسم سطر الكود بسطور:
- يقوم السطر الأول بإنشاء حلقة للتكرار ويتكرر من خلال قائمة بجميع الملفات ذات مسافة باسمها. ينشئ التعبير
*\ *القائمة. ينطبق السطر الثاني على كل عنصر من عناصر القائمة وينقل الملف إلى واحد جديد يستبدل المساحة بتسطير أسفل السطر (_). يستخدم الجزء${file// /_}امتداد المعلمة shell لاستبدال نموذج داخل معلمة بسلسلة.doneيشير إلى نهاية الجزء حلقة.
تغيير امتداد الملف
يوضح المثال التالي كيفية استخدام Bash for loop لإعادة تسمية جميع الملفات التي تنتهي بـ.jpeg في الدليل الحالي عن طريق استبدال امتداد الملف من.jpeg إلى.jpg.
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done
دعنا نحلل الشفرة سطرا:
- ينشئ السطر الأول حلقة للتكرار ويتكرر من خلال قائمة بجميع الملفات التي تنتهي بـ ".jpeg". يسري السطر الثاني على كل عنصر من عناصر القائمة وينقل الملف إلى واحد جديد يستبدل ".jpeg" بـ ".jpg".
${file%.jpeg}لإزالة الجزء ".jpeg" من اسم الملف باستخدام امتداد معلمة shelldoneيشير إلى نهاية مقطع الحلقة.
استنتاج
الآن يجب أن يكون لديك فهم جيد لكيفية استخدام bash للحلقة للتكرار من خلال القوائم.
باش حلقة المحطةصفائف باش
المصفوفات هي واحدة من هياكل البيانات الأكثر استخدامًا والأساسية. في هذه المقالة ، سنقوم بتغطية صفائف Bash ، وشرح كيفية استخدامها في البرامج النصية Bash.
باش: إلحاق الملف
في Linux ، هناك طرق متعددة لإلحاق النص بملف. يشرح هذا المقال البعض منهم.
كتابة التعليقات في البرامج النصية باش
في Bash ، يعتبر كل شيء بعد علامة التجزئة () وحتى نهاية السطر بمثابة تعليق. تؤدي إضافة تعليقات إلى البرامج النصية Bash إلى توفير الكثير من الوقت والجهود عندما تنظر إلى الكود في المستقبل.







