English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تقديم المعلمات إلى الشل

يمكننا نقل معلمات إلى سكربت عند تشغيل سكربت Shell، والشكل الذي يمكن الحصول عليه على المعلمات داخل السكربت هو:$n.n يعني عدد، 1 هو المعامل الأول لتشغيل السكربت، 2 هو المعامل الثاني لتشغيل السكربت، وهكذا……

مثال عبر الإنترنت

في هذا المثال، نرسل ثلاثة معلمات إلى السكربت ونخرجها بشكل منفصل، حيث $0 اسم الملف المستخدم للتنفيذ (بما في ذلك مسار الملف):

#!/bin/bash
# author:تعليميات الأساس
# url:ar.oldtoolbag.com
echo "مثال على تقديم المعلمات في الشل!";
echo "اسم الملف المستخدم للتنفيذ: $0";
echo "المعامل الأول: $1";
echo "المعامل الثاني هو: $2";
echo "المعامل الثالث هو: $3";

ضبط صلاحيات التنفيذ للسكربت، وتشغيل السكربت، وإخراج النتيجة كما يلي:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
مثال على تقديم المعلمات في الشل!
اسم الملف المستخدم للتنفيذ: ./test.sh
المعامل الأول: 1
المعامل الثاني هو: 2
المعامل الثالث هو: 3

إضافة إلى ذلك، هناك بعض الحروف الخاصة تستخدم لمعالجة المعلمات:

معالجة المعلماتشرح
$#عدد المعلمات المرسلة إلى السكربت
$*عرض جميع المعلمات المرسلة إلى السكربت كـ نص واحد.
في حالة استخدام "$*" محاط بـ « »، يتم إخراج جميع المعلمات بالشكل "$1 $2 … $n".
$$رقم معرف عملية تشغيل السكربت الحالية
$!رقم معرف آخر عملية تشغيل في الخلفية
$@مثل $*، ولكن عند استخدامها يجب أن تكون محاطة بالكواميس، ويتم إرجاع كل معامل داخل الكواميس.
في حالة استخدام "$@" محاط بـ « »، يتم إخراج جميع المعلمات بالشكل "$1" "$2" … "$n".
$-يظهر الخيارات الحالية المستخدمة لـ Shell، معأمر setالميزات متشابهة.
$?عرض حالة الخروج الأخيرة للأمر. 0 تعني عدم وجود أخطاء، بينما أي قيمة أخرى تشير إلى وجود أخطاء.
#!/bin/bash
# author:تعليميات الأساس
# url:ar.oldtoolbag.com
echo "مثال على تقديم المعلمات في الشل!";
echo "المعامل الأول: $1";
echo "عدد المعلمات: $#";
echo "عرض المعلمات كنص: $*";

تنفيذ السكربت، النتائج كما يلي:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
مثال على تقديم المعلمات في الشل!
المعامل الأول: 1
عدد المعلمات: 3
عرض المعلمات كنص: 1 2 3

فارق بين $* و $@:

  • مميزات مشتركة: كلاهما يأخذان جميع المعلمات.

  • مميزات مختلفة: تظهر فقط داخل الأسهم. إذا كان هناك ثلاثة معلمات في وقت تشغيل السكربت 1،2،3، فإن "*" يساوي "1 2 3" (تم تقديم معامل واحد)، بينما يساوي "@" "1" "2" "3" (تم تقديم ثلاثة معاملات).

#!/bin/bash
# author:تعليميات الأساس
# url:ar.oldtoolbag.com
echo "-- \$* مثال ---"
for i in "$*"; do
    echo $i
done
echo "-- \$@ مثال ---"
for i in "$@"; do
    echo $i
done

تنفيذ السكربت، النتائج كما يلي:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* مثال ---
1 2 3
-- $@ مثال ---
1
2
3