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