OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

التعامل مع المعلمات الموضعية بشكل جماعي

من المفيد أحيانًا إدارة جميع المعلمات الموضعية كمجموعة. على سبيل المثال ، قد نرغب في كتابة "غلاف" حول برنامج آخر. هذا يعني أننا نقوم بإنشاء برنامج نصي أو دالة shell التي تبسط استدعاء برنامج آخر. يوفر الغلاف ، في هذه الحالة ، قائمة بخيارات سطر الأوامر الغامضة ثم يمرر قائمة الحجج إلى برنامج المستوى الأدنى.

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


الجدول 32-1: المعلمات الخاصة * و @


المعلمة الوصف

المعلمة الوصف

$ * يتم توسيعه إلى قائمة المعلمات الموضعية ، بدءًا من 1. عند إحاطته بعلامات اقتباس مزدوجة ، فإنه يتوسع إلى سلسلة مقتبسة مزدوجة تحتوي على جميع المعلمات الموضعية ، ويفصل كل منها بالحرف الأول من متغير غلاف IFS (افتراضيًا مسافة اختلاف الشخصيات).


صورة

$ @ يتوسع في قائمة المعلمات الموضعية ، بدءًا من 1. عندما تكون محاطة بعلامات اقتباس مزدوجة ، فإنها توسع كل معلمة موضعية إلى كلمة منفصلة محاطة بعلامات اقتباس مزدوجة.


صورة


إليك نص يُظهر هذه المعلمات الخاصة أثناء العمل:

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


#! / بن / باش

# posit-params3: البرنامج النصي لإظهار $ * و $ @ print_params () {

صدى "\ $ 1 = $ 1" echo "\ $ 2 = $ 2" echo "\ $ 3 = $ 3" ​​echo "\ $ 4 = $ 4"

}


pass_params () {

صدى -e "\ n" '$ *:'؛ print_params $ * echo -e "\ n" "" $ * ": '؛ print_params "$ *" echo -e "\ n" '$ @:'؛ print_params $ @ echo -e "\ n" "" $ @ ": '؛ print_params "$ @"

}


pass_params "word" "كلمات بها مسافات"

#! / بن / باش

# posit-params3: البرنامج النصي لإظهار $ * و $ @ print_params () {

صدى "\ $ 1 = $ 1" echo "\ $ 2 = $ 2" echo "\ $ 3 = $ 3" ​​echo "\ $ 4 = $ 4"

}


pass_params () {

صدى -e "\ n" '$ *:'؛ print_params $ * echo -e "\ n" "" $ * ": '؛ print_params "$ *" echo -e "\ n" '$ @:'؛ print_params $ @ echo -e "\ n" "" $ @ ": '؛ print_params "$ @"

}


pass_params "word" "كلمات بها مسافات"


في هذا البرنامج المعقد نوعًا ما ، ننشئ حجتين: "كلمة" و "كلمات بها مسافات" ، ونمررها إلى تمر_المعلمات وظيفة. تقوم هذه الوظيفة بدورها بتمريرها إلى ملف print_params دالة ، باستخدام كل من الطرق الأربع المتاحة مع المعلمات الخاصة $* و $@. عند تنفيذه ، يكشف النص عن الاختلافات:


صورة

[me @ linuxbox ~] $ الموضع بارام 3


دولار *:


$1

=

كلمة

$2

=

كلمات

$3

=

مع

$4

=

المساحات

"$ *":


$1

=

كلمات مع مسافات

$2

=

$3

=

$4

=

@ $:


$1

=

كلمة

$2

=

كلمات

$3

=

مع

$4

=

المساحات

"$ @":

1 دولار = كلمة


2 دولار = كلمات بمسافات

3 دولارًا =

4 دولارًا =

2 دولار = كلمات بمسافات

3 دولارًا =

4 دولارًا =


مع حججنا ، على حد سواء $* و $@ الحصول على نتيجة من أربع كلمات:

كلمات مع مسافات

ينتج عن "$ *" نتيجة من كلمة واحدة:

"كلمات مع مسافات"

ينتج عن "$ @" نتيجة من كلمتين:

"كلمة" "كلمات بها مسافات"

الذي يطابق نيتنا الفعلية. الدرس المستفاد من هذا هو أنه على الرغم من أن الغلاف يوفر أربع طرق مختلفة للحصول على قائمة المعلمات الموضعية ، "$@"إلى حد بعيد هو الأكثر فائدة لمعظم المواقف ، لأنه يحافظ على سلامة كل معلمة موضعية.


أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: