في برمجة باش، الحلقات هي هياكل تحكم تسمح لك بتنفيذ كتلة من التعليمات البرمجية بشكل متكرر إلى أن يتم تلبية شرط معين. تعتبر الحلقات ضرورية لأتمتة المهام المتكررة ومعالجة مجموعات البيانات وإجراء العمليات التكرارية. إن فهم الأنواع المختلفة للحلقات المتوفرة في باش أمر بالغ الأهمية لكتابة نصوص برمجية فعالة وذات كفاءة.
حلقة for
هي حلقة بسيطة تُستخدم بشكل شائع في باش. تسمح لك بالتكرار خلال قائمة من القيم أو نطاق من الأرقام. يكون بناء جملة حلقة for
على النحو التالي:
for variable in list do commands done
variable
: المتغير المستخدم للتكرار خلال القائمة أو النطاق.list
: قائمة القيم أو نطاق الأرقام التي سيتم التكرار خلالها.commands
: الأوامر التي سيتم تنفيذها لكل تكرار من الحلقة.على سبيل المثال، تتكرر حلقة for
التالية خلال قائمة الفواكه وتطبع كل فاكهة:
fruits=(apple banana orange) for fruit in "${fruits[@]}" do echo $fruit done
تنفذ حلقة while
كتلة من التعليمات البرمجية بشكل متكرر طالما أن شرطًا محددًا صحيح. يكون بناء جملة حلقة while
على النحو التالي:
while condition do commands done
condition
: الشرط الذي يحدد ما إذا كانت الحلقة ستستمر في التنفيذ.commands
: الأوامر التي سيتم تنفيذها لكل تكرار من الحلقة.على سبيل المثال، تستمر حلقة while
التالية في طباعة الأرقام من 1 إلى 10:
i=1 while [ $i -le 10 ] do echo $i ((i++)) done
حلقة until
تشبه حلقة while
، لكنها تنفذ كتلة من التعليمات البرمجية بشكل متكرر إلى أن يصبح شرط محدد خاطئ. يكون بناء جملة حلقة until
على النحو التالي:
until condition do commands done
condition
: الشرط الذي يحدد ما إذا كانت الحلقة ستستمر في التنفيذ.commands
: الأوامر التي سيتم تنفيذها لكل تكرار من الحلقة.على سبيل المثال، تستمر حلقة until
التالية في طباعة الأرقام من 1 إلى 10 إلى أن يدخل المستخدم قيمة غير رقمية:
read -p "Enter a number: " number until [[ $number =~ ^[0-9]+$ ]] do echo "Invalid input. Please enter a number." read -p "Enter a number: " number done echo "You entered $number."
حلقة do-while
هي متغير من حلقة while
التي تنفذ كتلة من التعليمات البرمجية مرة واحدة على الأقل قبل التحقق من شرط الحلقة. يكون بناء جملة حلقة do-while
على النحو التالي:
do commands done while condition
commands
: الأوامر التي سيتم تنفيذها لكل تكرار من الحلقة.condition
: الشرط الذي يحدد ما إذا كانت الحلقة ستستمر في التنفيذ.على سبيل المثال، تستمر حلقة do-while
التالية في طباعة الأرقام من 1 إلى 10، حتى إذا أدخل المستخدم قيمة غير رقمية:
read -p "Enter a number: " number do echo $number ((number++)) done while [[ $number -le 10 ]]
الحلقات المتداخلة هي حلقات داخل حلقات. إنها تسمح لك بإجراء تكرارات معقدة ومعالجة هياكل البيانات ذات المستويات المتعددة. يمكن إنشاء الحلقات المتداخلة عن طريق الجمع بين أنواع مختلفة من الحلقات أو باستخدام نفس النوع من الحلقة عدة مرات.
على سبيل المثال، تتكرر حلقات for
المتداخلة التالية خلال مصفوفة ثنائية الأبعاد وتطبع كل عنصر:
array=( [0,0]=1 [0,1]=2 [0,2]=3 [1,0]=4 [1,1]=5 [1,2]=6 [2,0]=7 [2,1]=8 [2,2]=9 ) for ((i=0; i<3; i++)) do for ((j=0; j<3; j++)) do echo ${array[$i,$j]} done done
تسمح لك عبارات التحكم في الحلقة بتعديل تدفق الحلقة. إن عبارتي التحكم في الحلقة الأكثر استخدامًا في باش هما break
وcontinue
.
تُستخدم عبارة break
لإنهاء الحلقة قبل الأوان. عند مواجهة عبارة break
، يتم إنهاء الحلقة على الفور، وتستمر التنفيذ مع العبارة التالية بعد الحلقة.
على سبيل المثال، تستخدم حلقة for
التالية عبارة break
لإنهاء الحلقة عندما تصل قيمة i
إلى 5:
for ((i=0; i<10; i++)) do if [ $i -eq 5 ] then break fi echo $i done
تُستخدم عبارة continue
لتخطي التكرار الحالي للحلقة والمتابعة بالتكرار التالي. عند مواجهة عبارة continue
، يتم تخطي العبارات المتبقية في التكرار الحالي، وتنتقل الحلقة إلى التكرار التالي.
على سبيل المثال، تستخدم حلقة while
التالية عبارة continue
لتخطي الأرقام الزوجية:
i=0 while [ $i -lt 10 ] do ((i++)) if [ $((i % 2)) -eq 0 ] then continue fi echo $i done
الحلقات هي هياكل تحكم أساسية في برمجة باش والتي تسمح لك بأتمتة المهام المتكررة ومعالجة مجموعات البيانات وإجراء العمليات التكرارية. إن فهم الأنواع المختلفة للحلقات المتوفرة في باش وكيفية استخدامها بشكل فعال أمر بالغ الأهمية لكتابة نصوص برمجية فعالة وذات كفاءة. بالإضافة إلى ذلك، تمنحك عبارات التحكم في الحلقة القدرة على تعديل تدفق الحلقات، مما يجعلها أكثر تنوعًا.
لتصبح بارعًا في استخدام الحلقات في باش، من المهم التدرب والتجربة في سيناريوهات مختلفة. كلما زاد عملك مع الحلقات، كلما أصبحت أفضل في فهم سلوكها وتطبيقها لحل المشكلات في العالم الحقيقي.
YesNo
اترك ردا