OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

טיפול בפרמטרים מיקוםיים בהמוניהם

לפעמים כדאי לנהל את כל הפרמטרים המיקוםיים כקבוצה. לדוגמה, אולי נרצה לכתוב "עטיפה" סביב תוכנית אחרת. משמעות הדבר היא שאנו יוצרים סקריפט או פונקציית מעטפת המפשטת את הפעלת תוכנית אחרת. המעטפת, במקרה זה, מספקת רשימה של אפשרויות שורת פקודה סתמיות ולאחר מכן מעבירה רשימה של טיעונים לתוכנית ברמה נמוכה יותר.

המעטפת מספקת שני פרמטרים מיוחדים למטרה זו. שניהם מתרחבים לרשימה המלאה של פרמטרים מיקומיים, אך נבדלים זה מזה בדרכים עדינות למדי. הם:


טבלה 32-1: הפרמטרים המיוחדים * ו-@


תיאור פרמטר

תיאור פרמטר

$* מתרחב לרשימת הפרמטרים המיקוםיים, החל מ-1. כאשר הוא מוקף במירכאות כפולות, הוא מתרחב למחרוזת מרכאות כפולות המכילה את כל הפרמטרים המיקוםיים, כל אחד מופרד על ידי התו הראשון של משתנה מעטפת IFS (כברירת מחדל רווח אופי).


תמונה

$@ מתרחב לרשימת הפרמטרים המיקוםיים, החל מ-1. כאשר הוא מוקף במירכאות כפולות, הוא מרחיב כל פרמטר מיקום למילה נפרדת מוקפת במירכאות כפולות.


תמונה


הנה תסריט שמראה את הפרמטרים המיוחדים האלה בפעולה:

טיפול בפרמטרים מיקוםיים בהמוניהם


#! / bin / bash

# posit-params3: סקריפט להדגמת $* ו-$@ print_params () {

echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4"

}


pass_params () {

echo -e "\n" '$* :'; print_params $* echo -e "\n" '"$*" :'; print_params "$*" echo -e "\n" '$@ :'; print_params $@ echo -e "\n" '"$@" :'; print_params "$@"

}


pass_params "word" "מילים עם רווחים"

#! / bin / bash

# posit-params3: סקריפט להדגמת $* ו-$@ print_params () {

echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4"

}


pass_params () {

echo -e "\n" '$* :'; print_params $* echo -e "\n" '"$*" :'; print_params "$*" echo -e "\n" '$@ :'; print_params $@ echo -e "\n" '"$@" :'; print_params "$@"

}


pass_params "word" "מילים עם רווחים"


בתוכנית די מפותלת זו, אנו יוצרים שני טיעונים: "מילה" ו"מילים עם רווחים", ומעבירים אותם ל- pass_params פוּנקצִיָה. פונקציה זו, בתורה, מעבירה אותם ל- print_params פונקציה, תוך שימוש בכל אחת מארבע השיטות הזמינות עם הפרמטרים המיוחדים $* ו $@. כאשר הוא מופעל, התסריט חושף את ההבדלים:


תמונה

[me@linuxbox ~]$ posit-param3


$* :


$1

=

מילה

$2

=

מילים

$3

=

עם

$4

=

רווחים

"$*" :


$1

=

מילים במילה עם רווחים

$2

=

$3

=

$4

=

$@ :


$1

=

מילה

$2

=

מילים

$3

=

עם

$4

=

רווחים

"$@" :

$1 = מילה


$2 = מילים עם רווחים

3 $ =

4 $ =

$2 = מילים עם רווחים

3 $ =

4 $ =


עם הטיעונים שלנו, שניהם $* ו $@ תפיק תוצאה של ארבע מילים:

מילים במילה עם רווחים

"$*" מייצר תוצאה של מילה אחת:

"מילים מילים עם רווחים"

"$@" מייצר תוצאה של שתי מילים:

"מילה" "מילים עם רווחים"

שתואם את הכוונה האמיתית שלנו. הלקח שצריך לקחת מזה הוא שלמרות שהמעטפת מספקת ארבע דרכים שונות לקבל את רשימת הפרמטרים המיקוםיים, "$@" הוא ללא ספק השימושי ביותר עבור רוב המצבים, מכיוון שהוא משמר את השלמות של כל פרמטר מיקום.


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: