المنطق في Bash Scripting: الشروط والحلقات عمليًا
بعد كتابة أول سكربت Bash، الخطوة التالية هي إضافة المنطق: قرارات، تكرار، وحالات متعددة.
في هذا الدرس ستتعلم الشروط والحلقات بطريقة عملية قابلة للاستخدام مباشرة.
لماذا نحتاج المنطق في Bash Scripting؟
- اتخاذ قرار حسب المدخلات أو حالة النظام
- تكرار أوامر على ملفات أو خوادم متعددة
- بناء سكربتات ديناميكية بدل أوامر ثابتة
الشرط if الأساسي في Bash
#!/bin/bash
AGE=20
if [ "$AGE" -ge 18 ]; then
echo "Adult"
fi
تذكر وضع مسافات داخل الأقواس [ ].
استخدام if / else / elif
#!/bin/bash
SCORE=75
if [ "$SCORE" -ge 90 ]; then
echo "Excellent"
elif [ "$SCORE" -ge 70 ]; then
echo "Good"
else
echo "Needs improvement"
fi
أشهر معاملات المقارنة في Bash
| المعامل | المعنى |
|---|---|
-eq |
يساوي (أرقام) |
-ne |
لا يساوي |
-gt |
أكبر من |
-lt |
أصغر من |
-ge |
أكبر أو يساوي |
-le |
أصغر أو يساوي |
اختبار النصوص والملفات في الشروط
if [ -f "/etc/passwd" ]; then
echo "File exists"
fi
if [ -d "/var/log" ]; then
echo "Directory exists"
fi
if [ -z "$NAME" ]; then
echo "NAME is empty"
fi
الحلقة for في Bash
for USER in ali sara omar; do
echo "Hello $USER"
done
مثال على نطاق رقمي:
for i in {1..5}; do
echo "Run $i"
done
الحلقة while في Bash
COUNT=1
while [ "$COUNT" -le 3 ]; do
echo "Count: $COUNT"
COUNT=$((COUNT + 1))
done
مناسبة عندما لا تعرف عدد التكرارات مسبقًا.
الاختيار المتعدد باستخدام case
read -p "Choose env (dev/prod): " ENV
case "$ENV" in
dev)
echo "Development mode"
;;
prod)
echo "Production mode"
;;
*)
echo "Unknown option"
;;
esac
استخدام المنطق مع Arguments
#!/bin/bash
if [ "$#" -lt 1 ]; then
echo "Usage: $0 start|stop"
exit 1
fi
case "$1" in
start) echo "Starting service..." ;;
stop) echo "Stopping service..." ;;
*) echo "Invalid option" ;;
esac
تمرين عملي: سكربت قرار + حلقة
#!/bin/bash
read -p "Enter number: " N
if [ "$N" -gt 10 ]; then
echo "Greater than 10"
else
echo "10 or less"
fi
for i in {1..3}; do
echo "Loop $i"
done
إذا نفذ الشرط بشكل صحيح وطبع الحلقة 3 مرات، فأنت أتقنت أساس المنطق في Bash.
FAQ: أسئلة شائعة حول Bash Logic
كيف أكتب شرط if في Bash؟
تكتب if ثم شرط داخل [ ] ثم then والأوامر، ويمكن إضافة else وelif حسب الحاجة.
ما الفرق بين for وwhile في Bash؟
for مناسبة للتكرار على قائمة عناصر أو نطاق، بينما while تعتمد على شرط يستمر طالما كان صحيحا.
متى أستخدم case بدل if؟
case أفضل عندما لديك عدة حالات لقيمة واحدة مثل خيارات menu أو arguments محددة.
الخطوة التالية
في الدرس القادم سنتعلم كتابة Functions داخل Bash لتنظيم السكربتات.
التالي: Bash Functions