الحصول على مدخلات من لوحة المفاتيح وإجراء العمليات الحسابية في سكربتات الصدفة (Shell Scripts)
يعتبر تعلم كيفية التعامل مع المدخلات الحسابية في سكربتات الصدفة (Shell Scripts) من المهارات الأساسية التي يحتاج إليها أي شخص يعمل مع أنظمة UNIX أو Linux. سكربتات الصدفة توفر وسيلة قوية لأتمتة المهام المختلفة بما في ذلك العمليات الحسابية، والتحقق من المدخلات، وتنفيذ الأوامر بناءً على المدخلات التي يقدمها المستخدم. في هذا المقال، سوف نتناول كيفية التعامل مع المدخلات من لوحة المفاتيح وكيفية إجراء العمليات الحسابية باستخدام سكربتات الصدفة بشكل مفصل.
الفهم الأساسي للـ Shell Scripts
قبل أن نغوص في العمليات الحسابية، يجب أن نفهم بشكل أساسي ماهية سكربتات الصدفة. الـ Shell script هو ملف نصي يحتوي على مجموعة من الأوامر التي يتم تنفيذها بواسطة مفسر الصدفة (Shell). يمكن لهذه الأوامر أن تكون متنوعة، بدءًا من إدارة الملفات والأنظمة، وصولًا إلى إجراء العمليات الحسابية البسيطة والمعقدة.
عادةً ما تبدأ سكربتات الصدفة باستخدام سطر البداية #!/bin/bash الذي يحدد أن السكربت سيعمل باستخدام Bash shell. ومن خلال هذه السكربتات يمكن للمستخدم التفاعل مع النظام بشكل أكثر سلاسة ودون الحاجة إلى إدخال الأوامر يدويًا.
المدخلات من لوحة المفاتيح
يمكن للمستخدمين إدخال البيانات إلى سكربتات الصدفة بعدة طرق، ولكن أكثر الطرق شيوعًا هي استخدام الأمر read لجمع المدخلات من لوحة المفاتيح. يعتبر read أداة أساسية في سكربتات الصدفة، حيث يقوم بانتظار إدخال المستخدم ويقوم بتخزين هذه المدخلات في متغيرات يمكن استخدامها لاحقًا في السكربت.
مثال على جمع المدخلات من المستخدم:
bash#!/bin/bash
echo "من فضلك أدخل رقمًا:"
read num1
echo "أدخل رقمًا آخر:"
read num2
echo "الرقمان اللذان أدخلتهما هما: $num1 و $num2"
في هذا المثال، يقوم السكربت بطلب مدخلين من المستخدم، ويخزنهما في المتغيرين num1 و num2. ثم يقوم بإظهار هذه المدخلات باستخدام echo.
إجراء العمليات الحسابية
بعد أن يتم جمع المدخلات من المستخدم، يمكن إجراء العمليات الحسابية عليها. هناك العديد من الأساليب التي يمكن استخدامها لإجراء العمليات الحسابية في سكربتات الصدفة، ويعتمد ذلك على نوع العمليات التي تريد إجراؤها.
1. العمليات الحسابية باستخدام expr
أداة expr هي إحدى الأدوات القديمة التي تسمح بإجراء العمليات الحسابية البسيطة في سكربتات الصدفة. على الرغم من وجود أدوات أكثر تطورًا، إلا أن expr لا يزال شائعًا في بعض السكربتات.
مثال على استخدام expr:
bash#!/bin/bash
echo "من فضلك أدخل رقمًا:"
read num1
echo "أدخل رقمًا آخر:"
read num2
sum=$(expr $num1 + $num2)
echo "مجموع الرقمين هو: $sum"
في هذا المثال، يقوم السكربت بحساب مجموع الرقمين المدخلين باستخدام expr ويعرض النتيجة.
2. العمليات الحسابية باستخدام (( ))
تُعد الطريقة الثانية الأكثر شيوعًا في سكربتات Bash لإجراء العمليات الحسابية هي استخدام (( )). هذه الطريقة هي الأكثر مرونة وسهولة في التعامل مع الأعداد والعوامل الحسابية في Bash.
مثال على استخدام (( )):
bash#!/bin/bash
echo "من فضلك أدخل رقمًا:"
read num1
echo "أدخل رقمًا آخر:"
read num2
sum=$((num1 + num2))
echo "مجموع الرقمين هو: $sum"
يعد استخدام (( )) أسرع وأبسط من expr، ويتيح لك أيضًا العمل مع الأعداد العشرية بشكل مباشر دون الحاجة إلى تحويلات إضافية.
3. العمليات الحسابية باستخدام bc
إذا كنت بحاجة إلى إجراء عمليات حسابية مع أرقام عشرية أو تحتاج إلى دقة أعلى في الحسابات، يمكنك استخدام أداة bc (اختصار لـ Basic Calculator). وهي أداة تتيح لك إجراء العمليات الحسابية على الأرقام العشرية بدقة.
مثال على استخدام bc:
bash#!/bin/bash
echo "من فضلك أدخل الرقم الأول:"
read num1
echo "أدخل الرقم الثاني:"
read num2
result=$(echo "$num1 + $num2" | bc)
echo "مجموع الرقمين هو: $result"
في هذا المثال، نستخدم bc لتنفيذ عملية جمع للأرقام العشرية المدخلة من المستخدم. يمكن لـ bc أيضًا إجراء عمليات أكثر تعقيدًا مثل القسمة والضرب مع الحفاظ على الدقة العشرية.
التعامل مع المدخلات والتحقق من صحتها
من الأمور المهمة عند التعامل مع المدخلات من المستخدم هو التأكد من أن المدخلات صالحة قبل إجراء العمليات الحسابية عليها. يمكن أن يقوم المستخدم بإدخال قيم غير صالحة مثل الحروف أو القيم الفارغة، مما قد يؤدي إلى أخطاء أثناء تنفيذ السكربت.
إليك بعض الطرق التي يمكن من خلالها التحقق من صحة المدخلات:
1. التحقق من المدخلات الرقمية
قبل إجراء العمليات الحسابية، يجب التأكد من أن المدخلات عبارة عن أرقام. يمكن استخدام التعبيرات الشرطية (conditional expressions) للتأكد من ذلك:
bash#!/bin/bash
echo "من فضلك أدخل رقمًا:"
read num1
if ! [[ "$num1" =~ ^[0-9]+$ ]]; then
echo "الرجاء إدخال رقم صحيح."
exit 1
fi
echo "الرقم المدخل هو: $num1"
في هذا المثال، نستخدم تعبيرًا منتظمًا (regular expression) للتحقق من أن المدخل هو رقم صحيح. إذا لم يكن المدخل رقماً، يقوم السكربت بعرض رسالة خطأ ويغلق البرنامج.
2. التحقق من عدم ترك المدخل فارغًا
من الأمور الأخرى التي يجب التأكد منها هي أن المدخلات ليست فارغة. يمكنك استخدام شرط if للتحقق مما إذا كانت المدخلات فارغة أم لا:
bash#!/bin/bash
echo "من فضلك أدخل رقمًا:"
read num1
if [ -z "$num1" ]; then
echo "لم تقم بإدخال أي قيمة."
exit 1
fi
echo "الرقم المدخل هو: $num1"
في هذا المثال، نتحقق إذا كانت المتغيرات المدخلة فارغة باستخدام الخيار -z. إذا كانت فارغة، يعرض السكربت رسالة تحذيرية.
العمليات الحسابية المتقدمة
إلى جانب العمليات الحسابية الأساسية مثل الجمع والطرح، يمكن إجراء عمليات أكثر تعقيدًا مثل القسمة أو حساب المتوسط. إليك بعض الأمثلة على ذلك.
1. قسمة الأرقام مع الحفاظ على الدقة العشرية
إذا أردت إجراء عملية قسمة مع الحفاظ على الدقة العشرية، يمكنك استخدام أداة bc مع تحديد دقة معينة:
bash#!/bin/bash
echo "من فضلك أدخل الرقم الأول:"
read num1
echo "أدخل الرقم الثاني:"
read num2
result=$(echo "scale=2; $num1 / $num2" | bc)
echo "نتيجة القسمة هي: $result"
هنا نستخدم scale=2 لتحديد دقة العمليات العشرية إلى منزلتين عشريتين.
2. حساب المتوسط
لحساب المتوسط بين عددين، يمكن استخدام الصيغة التالية:
bash#!/bin/bash
echo "من فضلك أدخل الرقم الأول:"
read num1
echo "أدخل الرقم الثاني:"
read num2
average=$(echo "scale=2; ($num1 + $num2) / 2" | bc)
echo "المتوسط هو: $average"
الاستنتاج
في سكربتات الصدفة، يمكن جمع المدخلات من لوحة المفاتيح وإجراء العمليات الحسابية بطرق متعددة وفقًا لاحتياجات المستخدم. بداية من العمليات الحسابية البسيطة باستخدام expr و(( )) وصولًا إلى العمليات المتقدمة باستخدام bc، توفر سكربتات الصدفة أدوات قوية ومرنة للتفاعل مع النظام وتنفيذ المهام الحسابية. بالإضافة إلى ذلك، يتيح التحقق من صحة المدخلات ضمان استقرار السكربت وعدم حدوث أخطاء غير متوقعة أثناء التشغيل.

