ديف أوبس

استخدام المعاملات الموضعية في السكربتات

المعاملات الموضعية (Positional Parameters) في سكربتات الصدفة (Shell Scripts)

تُعتبر سكربتات الصدفة (Shell Scripts) أحد الأدوات الأساسية في بيئات التشغيل الشائعة مثل أنظمة التشغيل Unix وLinux. تتيح هذه السكربتات للمستخدمين أتمتة العديد من المهام اليومية بشكل فعّال ومرن. ومن بين الخصائص المهمة التي توفرها سكربتات الصدفة هي المعاملات الموضعية (Positional Parameters)، والتي تُستخدم لتلقي المعطيات المُدخلة في شكل معلمات عند تنفيذ السكربتات.

تعريف المعاملات الموضعية

المعاملات الموضعية هي معطيات (parameters) تُمرر إلى السكربت أثناء تنفيذه عبر سطر الأوامر. يمكن استخدام هذه المعاملات داخل السكربتات للإشارة إلى القيم التي قام المستخدم بإدخالها. يتم تعيين هذه المعاملات إلى متغيرات قابلة للوصول من قبل السكربت باستخدام مؤشرات موضعية، مثل $1, $2, $3، وهكذا. في هذه الحالة، يُمثّل الرقم الذي يتبع علامة الدولار (مثل $1) المعامل الأول، بينما يُمثّل $2 المعامل الثاني، وهكذا.

الهيكل العام لاستخدام المعاملات الموضعية

عند تنفيذ سكربت من سطر الأوامر، يمكن للمستخدم تمرير معلمات إلى السكربت باستخدام بنية معينة. على سبيل المثال:

shell
$ ./script.sh arg1 arg2 arg3

في هذا المثال، script.sh هو اسم السكربت الذي يتم تنفيذه، و arg1 و arg2 و arg3 هي المعاملات التي تُمرر للسكربت. يمكن للسكربت داخل الملف الوصول إلى هذه المعاملات باستخدام المتغيرات الموضعية.

  • $1: يحتوي على القيمة الأولى (arg1).

  • $2: يحتوي على القيمة الثانية (arg2).

  • $3: يحتوي على القيمة الثالثة (arg3).

تستمر هذه السلسلة إلى المعامل الأخير. وإذا كان هناك المزيد من المعاملات، يمكن الوصول إليها عن طريق تعديل الرقم بعد علامة الدولار.

استخدام المعاملات الموضعية في السكربتات

تستخدم سكربتات الصدفة المعاملات الموضعية في عدة سياقات مختلفة. يمكن لهذه المعاملات أن تكون مفيدة في إجراء عمليات محددة بناءً على القيم المدخلة من قبل المستخدم. دعونا نلقي نظرة على بعض الأمثلة التي توضح كيفية استخدام المعاملات الموضعية في السكربتات.

مثال 1: سكربت بسيط لتحيّة المستخدم

نفترض أن لدينا سكربتًا بسيطًا يُطلب منه طباعة رسالة تحية تحتوي على اسم المستخدم الممرر كمعامل:

bash
#!/bin/bash # سكربت لتحية المستخدم echo "مرحباً، $1!"

في هذا السكربت، يتم طباعة تحية تحتوي على الاسم الذي تم تمريره كمعامل. إذا كان المستخدم ينفذ السكربت بالشكل التالي:

shell
$ ./greet.sh علي

سيطبع السكربت الرسالة: “مرحباً، علي!”

مثال 2: حساب حاصل ضرب معطيين

نفترض أننا نريد حساب حاصل ضرب معطيين يتم تمريرهما كمعاملات للسكربت:

bash
#!/bin/bash # سكربت لحساب حاصل ضرب معطيين result=$(( $1 * $2 )) echo "حاصل ضرب $1 و $2 هو: $result"

في هذا السكربت، يتم ضرب القيمتين الممررتين كمعاملات موضعية (مثل 5 و 6) ثم طباعة الناتج. إذا كان المستخدم ينفذ السكربت بالشكل التالي:

shell
$ ./multiply.sh 5 6

سيطبع السكربت الرسالة: “حاصل ضرب 5 و 6 هو: 30”.

مثال 3: التحقق من المعاملات المدخلة

يمكن للسكربتات أيضًا التحقق من صحة المعاملات الممررة. إذا كان السكربت يتطلب عددًا معينًا من المعاملات، فيمكن التحقق من ذلك باستخدام المعاملات الموضعية. إليك مثالاً على كيفية التحقق من وجود المعاملات المطلوبة:

bash
#!/bin/bash # سكربت للتحقق من وجود معملين if [ $# -ne 2 ]; then echo "يجب إدخال معاملين!" exit 1 fi echo "المعامل الأول: $1" echo "المعامل الثاني: $2"

في هذا السكربت، يتم التحقق من عدد المعاملات باستخدام المتغير الخاص بـ$# (عدد المعاملات الممررة). إذا كانت المعاملات أقل أو أكثر من العدد المطلوب، سيتم إخطار المستخدم بخطأ.

المعاملات الموضعية الخاصة

بالإضافة إلى المعاملات الموضعية العادية مثل $1, $2, وغيرها، توجد بعض المعاملات الخاصة التي يمكن استخدامها داخل السكربتات:

  • $0: يُمثل اسم السكربت نفسه. على سبيل المثال، إذا كان السكربت يسمى script.sh، فسيحتوي $0 على script.sh.

  • $#: يُمثل عدد المعاملات الممررة للسكربت. يساعد هذا المتغير في التحقق من عدد المعاملات المدخلة.

  • $@: يُمثل جميع المعاملات الممررة إلى السكربت في شكل مصفوفة من القيم. يمكن استخدام هذا المتغير للطباعة أو المعالجة الشاملة لجميع المعاملات الممررة.

  • $*: يُشبه $@ إلى حد بعيد، ولكنه يعامل المعاملات الممررة كسلسلة واحدة مفصولة بالمسافات.

التعامل مع المعاملات الموضعية في السكربتات

يمكن للمطورين استخدام المعاملات الموضعية بطرق متنوعة ضمن سكربتات الصدفة. على سبيل المثال، يمكن استخدام هذه المعاملات في تنفيذ وظائف مختلفة بناءً على المعطيات المدخلة:

  • إجراء عمليات حسابية على المعاملات.

  • التحقق من القيم المدخلة وتنفيذ الشروط.

  • إنشاء حلقات تكرار لمعالجة جميع المعاملات المدخلة.

من خلال هذه المعاملات، يمكن للمستخدمين تخصيص السكربتات وفقًا للاحتياجات الخاصة بهم، مما يوفر أداة قوية لأتمتة المهام.

استنتاج

تعتبر المعاملات الموضعية في سكربتات الصدفة أداة أساسية للمطورين والمستخدمين على حد سواء. تتيح هذه المعاملات تمكين السكربتات من استلام معطيات مخصصة من المستخدم وتنفيذ العمليات بناءً عليها. من خلال استخدامها بفعالية، يمكن تحسين الأتمتة وزيادة مرونة السكربتات في التعامل مع مختلف السيناريوهات.