
المتغيرات التي تخزن المعلمات الموضعية
مثال نموذجي للقذيفة الذي يستخدم المعلمات الموضعية هو bash. يمكنك استخدام bash على Linux و BSD و macOS X و Windows 10.
النظر في الأمر باش التالية. اسم الأمر هو mycommand . يحتوي سطر الأوامر على ثلاثة معلمات: واحد واثنان وثلاثة أربعة .
mycommand واحد اثنين "ثلاثة أربعة"
نصيحة: يتم تحديد المعلمات الموضعية بمسافة. يفسر الغلاف الأشياء بعد المسافات كمعلمات فردية. إذا كانت المعلمة نفسها تحتوي على مسافة ، ضعها بين علامتي اقتباس ، كما في "ثلاثة أربعة" أعلاه.
أثناء تشغيل mycommand ، يزودها bash بمتغيرات shell التالية:
اسم المتغير | القيمة |
---|---|
$ 0 | الامر الخاص بى |
$ 1 | واحد |
$ 2 | اثنان |
$ 3 | ثلاثة أربعة |
$ # | 3 |
[البريد الإلكتروني المحمي] | واحد إثنان ثلاثة أربعة |
$ * | واحد إثنان ثلاثة أربعة |
يتم تعيين المتغير $ 0 على الكلمة الأولى من الأمر - اسم الأمر. هذا المتغير مفيد لأنه يمكن إعادة تسمية الأوامر أو تنفيذها باستخدام رابط رمزي. تتصرف بعض البرامج بشكل مختلف بناءً على اسم الأمر المستخدم لتشغيل البرنامج. يسمح 0 $ لبرنامج لمعرفة اسم الأمر الذي أطلقه.
تحتوي المتغيرات $ 1 و $ 2 و $ 3 على قيم المعلمات الأولى والثانية والثالثة ، على التوالي. إذا كان هناك معلمة رابعة ، فستوضع قيمتها في المتغير $ 4 . يمكن الوصول إلى معلمات أكبر من 9 باستخدام الأقواس المتعرجة حول الرقم ؛ على سبيل المثال ، سيكون $ {10} هو المعامل العاشر ، وسيكون $ {123} هو 123.
يحتوي المتغير $ # على عدد المعلمات الموضعية ، باستثناء $ 0.
يحتوي المتغير [البريد الإلكتروني المحمي] على قيمة جميع معلمات الموضع ، باستثناء $ 0.
المتغير $ * هو نفسه [البريد الإلكتروني المحمي] ، إلا عندما يكون نقل مزدوج. عند إحاطة علامتي اقتباس مزدوجتين ، يتم توسيع $ * إلى $ 1c $ 2c $ 3c ... حيث c هي الحرف الأول من $ IFS ، متغير فاصل الحقل الداخلي في bash. يتم استخدام IFS لتقسيم الكلمات ، وقيمتها الافتراضية هي "مسافة أو علامة تبويب أو سطر جديد" - هذا هو المكان الذي يرى فيه bash نهاية كلمة واحدة وبداية الكلمة التالية.
إذا كانت قيمة $ IFS هي " _ " (تسطير أسفل السطر) ، فسيتم توسيع "[البريد الإلكتروني المحمي]" إلى:
واحد إثنان ثلاثة أربعة
بينما يمتد "$ *" إلى:
واحد إثنان ثلاثة أربعة
أمثلة
فيما يلي بعض الأمثلة لاستخدام المعلمات الموضعية في bash.
باستخدام الأمر set المدمج ، يمكن تعديل قيمة [البريد الإلكتروني المحمي] للقذيفة الحالية. كل شيء بعد المجموعة - سيتم تسجيله كمعلمة الموضعية.
مجموعة - واحد اثنين "ثلاثة أربعة"
يمكننا الآن تكرار هذه المتغيرات باستخدام ... في :
للحجة في [البريد الإلكتروني المحمي] ؛ هل صدى "$ arg" ؛ فعله
واحد إثنان ثلاثة أربعة
في bash ، [البريد الإلكتروني المحمي] هي القائمة الافتراضية للتكرار عند تشغيل ، لذلك يعمل هذا الأمر أيضًا:
لأرج هل صدى "$ arg" ؛ فعله
واحد إثنان ثلاثة أربعة
يوفر التكرار أكثر من "$ *" (مع علامات اقتباس مزدوجة) سلسلة متسلسلة من المعلمات الموضعية ، المرتبطة بالحرف الأول من $ IFS :
IFS = ""؛ للحجة في "$ *" ؛ هل صدى "$ arg" ؛ فعله
واحد إثنان ثلاثة أربعة
لمزيد من المعلومات ، راجع وثائق shell bash command.
المعلمة ، شروط البرمجة