حلقة For التكرارية
جزء من قسم الأساسيات في رحلة Terminal على Coddy — الدرس 71 من 82.
أحياناً تحتاج إلى تكرار إجراء ما عدة مرات. بدلاً من كتابة الأمر نفسه مراراً وتكراراً، يمكنك استخدام حلقة for للتكرار عبر قائمة من العناصر وتنفيذ إجراء على كل منها.
إليك الهيكل الأساسي لحلقة for في Bash:
#!/bin/bash
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneيقوم هذا السكريبت بإخراج تحية لكل اسم في القائمة. تأخذ المتغيرة name كل قيمة بالترتيب: أولاً "Alice"، ثم "Bob"، ثم "Charlie". تحدد الكلمة المفتاحية do بداية جسم الحلقة، وتنهيها done.
تعتبر حلقات for قوية بشكل خاص عند دمجها مع الرموز البديلة (wildcards). يمكنك التكرار عبر جميع الملفات في دليل معين:
#!/bin/bash
for file in *.txt; do
echo "Processing $file"
doneيقوم هذا بالتكرار عبر كل ملف .txt في المجلد الحالي. في كل تكرار، يحمل المتغير file اسم الملف الحالي، مما يتيح لك إجراء العمليات على كل ملف تلقائياً.
يمكنك أيضاً التكرار عبر نطاق من الأرقام باستخدام توسيع الأقواس (brace expansion):
#!/bin/bash
for i in {1..5}; do
echo "Number: $i"
doneيقوم هذا بطباعة الأرقام من 1 إلى 5. تقوم حلقات For بتحويل المهام المتكررة إلى مجرد بضعة أسطر من التعليمات البرمجية، مما يجعل البرامج النصية الخاصة بك أكثر كفاءة وأسهل في الصيانة.
التحدي
سهلقم بإنشاء سكربت shell يسمى countdown.sh يستخدم حلقة for لطباعة عد تنازلي من 5 إلى 1.
يجب أن يقوم السكربت الخاص بك بـ:
- البدء بسطر shebang (
#!/bin/bash) - استخدام حلقة for مع توسيع الأقواس (brace expansion) للتكرار عبر الأرقام من 5 تنازلياً إلى 1
- طباعة كل رقم في سطر مستقل بالتنسيق التالي:
Countdown: [number]
اجعل السكربت قابلاً للتنفيذ وقم بتشغيله. يجب أن تكون المخرجات كالتالي:
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1تلميح: استخدم
{5..1}لإنشاء نطاق تنازلي. داخل الحلقة، استخدمecho "Countdown: $i"حيثiهو متغير الحلقة الخاص بك.
ورقة مرجعية
تسمح لك حلقة for بالتكرار عبر قائمة من العناصر وتنفيذ إجراء على كل منها.
الصيغة الأساسية:
for variable in list; do
# الأوامر
doneالتكرار عبر قائمة من القيم:
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneالتكرار عبر الملفات باستخدام الأحرف النائبة (wildcards):
for file in *.txt; do
echo "Processing $file"
doneالتكرار عبر نطاق من الأرقام باستخدام توسيع الأقواس (brace expansion):
for i in {1..5}; do
echo "Number: $i"
doneبالنسبة للنطاقات التنازلية، اعكس الترتيب:
for i in {5..1}; do
echo "Number: $i"
doneجرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
7محتوى الملف
Head و Tailعد الكلمات (Word Count)أمر Sortأمر Uniqueأساسيات GrepGrep مع الخياراتملخص - محقق النصوص13أساسيات برمجة Shell
ما هو Shell Script؟إنشاء وتشغيل Scriptالمتغيرات في الـ Scriptsمدخلات المستخدم في الـ Scriptsجملة If الشرطيةحلقة For التكراريةحلقة While التكراريةمراجعة - مخمن الأرقام2التنقل
عرض مسار المجلد الحاليعرض الملفاتتغيير المجلدالمسارات المطلقة مقابل المسارات النسبيةمجلد المنزل ومجلد الجذرخلاصة - حدد مسارك8إعادة التوجيه
المخرجات القياسيةالكتابة فوق ملفالإضافة إلى ملفالمدخلات القياسيةالخطأ القياسيمراجعة - بناء سجل الأحداث11الأذونات
فهم الأذوناتقراءة الأذوناتChmod باستخدام الأرقامChmod باستخدام الرموزملكية الملفاتملخص - إحكام الحماية14مشروع سكربت النسخ الاحتياطي
نظرة عامة على المشروعالحصول على مسار المصدر