مقدمة إلى Bash Scripting: المتغيرات، الشروط، والحلقات
أهلاً بك يا مهندس! بما أنك هنا، غالباً بتعرف إن Bash هو لغة سكريبتات قوية جداً ومفيدة لإدارة أنظمة Linux. يلا بينا نتعمق فيها ونشوف أساسياتها.
المتغيرات
في أي لغة برمجة، المتغيرات هي أماكن لتخزين البيانات. في Bash، الموضوع بسيط جداً.
تعريف المتغيرات
عشان تعرف متغير، ما تحتاج تحدد نوعه. بس اكتب اسمه وعطيه قيمة. انتبه، ما في مسافات حول علامة التساوي =.
my_variable="Hello Bash"
number=10
الوصول لقيم المتغيرات
عشان توصل لقيمة المتغير، تستخدم علامة الدولار $ قبل اسمه.
echo $my_variable
echo "The number is: $number"
ملاحظة سريعة: لما تحط متغير داخل نص، يفضل تحط اسمه بين قوسين معقوفين
{}عشان تتأكد إن Bash بيفهم إنه متغير، خصوصاً لو كان بعده نص مباشر. يعنيecho "This is ${my_variable}!"أفضل منecho "This is $my_variable!"في بعض الحالات.
مثال عملي على المتغيرات
#!/bin/bash
# تعريف متغيرات
name="Ahmed"
age=30
greeting="مرحباً"
# طباعة المتغيرات
echo "$greeting يا $name!"
echo "عمرك هو $age سنة."
# تغيير قيمة متغير
age=$((age + 1))
echo "بعد سنة، عمرك سيكون $age سنة."
الشروط (If Statements)
الشروط تخلي السكريبت بتاعك يتخذ قرارات بناءً على قيم معينة.
الصيغة الأساسية لـ if
if [ condition ]; then
# الأوامر اللي تتنفذ لو الشرط صحيح
fi
if-else
لو عندك خيارين، واحد لو الشرط صحيح، والثاني لو خطأ.
if [ condition ]; then
# الأوامر لو الشرط صحيح
else
# الأوامر لو الشرط خطأ
fi
if-elif-else
لو عندك أكثر من شرط ممكن يتنفذ. elif اختصار لـ "else if".
if [ condition1 ]; then
# الأوامر لو condition1 صحيح
elif [ condition2 ]; then
# الأوامر لو condition2 صحيح
else
# الأوامر لو كل الشروط اللي قبلها خطأ
fi
ملاحظة مهمة: المسافات حول الأقواس المربعة
[]والعمليات مهمة جداً. يعني[ $a -eq $b ]صحيح، لكن[$a -eq $b]خطأ.
عوامل الاختبار الشائعة
- مقارنة الأعداد:
-eq: يساوي (Equal to)-ne: لا يساوي (Not equal to)-gt: أكبر من (Greater than)-ge: أكبر من أو يساوي (Greater than or equal to)-lt: أصغر من (Less than)-le: أصغر من أو يساوي (Less than or equal to)
- مقارنة النصوص:
==أو=: يساوي!=: لا يساوي-z "string": صحيح إذا كان النص فارغاً-n "string": صحيح إذا كان النص غير فارغ
- اختبار الملفات:
-f "file": صحيح إذا كان ملف عادي وموجود-d "directory": صحيح إذا كان مجلد وموجود-e "path": صحيح إذا كان المسار موجود (ملف أو مجلد)
مثال عملي على الشروط
#!/bin/bash
read -p "أدخل رقم: " num
if [ -z "$num" ]; then
echo "لم تدخل أي رقم!"
elif [ "$num" -gt 10 ]; then
echo "الرقم $num أكبر من 10."
elif [ "$num" -eq 10 ]; then
echo "الرقم $num يساوي 10."
else
echo "الرقم $num أصغر من 10."
fi
# مثال على مقارنة نصوص
name="Bash"
if [ "$name" == "Bash" ]; then
echo "أهلاً يا Bash!"
else
echo "أنت لست Bash."
fi
الحلقات (Loops)
الحلقات تخلينا نكرر مجموعة من الأوامر عدد معين من المرات أو حتى يتحقق شرط معين.
حلقة for
تستخدم لتكرار الأوامر على قائمة من العناصر أو عدد معين من المرات.
التكرار على قائمة
for item in item1 item2 item3; do
echo "العنصر الحالي: $item"
done
التكرار على نطاق أرقام (مثل C-style)
for i in {1..5}; do
echo "الرقم: $i"
done
# أو باستخدام صيغة C-style
for (( i=1; i<=5; i++ )); do
echo "الرقم (C-style): $i"
done
حلقة while
تكرر الأوامر طالما الشرط صحيح.
while [ condition ]; do
# الأوامر اللي تتنفذ طالما الشرط صحيح
done
مثال عملي على الحلقات
#!/bin/bash
# مثال على حلقة for لتكرار على ملفات في مجلد
echo "قائمة الملفات في المجلد الحالي:"
for file in *; do
if [ -f "$file" ]; then
echo "- $file"
fi
done
# مثال على حلقة while لعد تنازلي
count=5
echo "بدء العد التنازلي:"
while [ $count -gt 0 ]; do
echo "$count..."
sleep 1 # انتظار ثانية
count=$((count - 1))
done
echo "انتهى!"
هيك بنكون غطينا أساسيات Bash scripting: المتغيرات، الشروط، والحلقات. هاي هي اللبنات الأساسية لأي سكريبت محترم. تدرب عليها كويس وراح تشوف كيف بتسهل عليك مهام كتير في إدارة نظامك. بالتوفيق يا مهندس!