OnWorks Linux ו-Windows Online WorkStations

לוגו

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

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

משתנים וקבועים

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



#! / bin / bash


# תוכנית לפלט דף מידע מערכת


title="דוח מידע מערכת"


הד"

כותרת $

כותרת $

"

#! / bin / bash


# תוכנית לפלט דף מידע מערכת


title="דוח מידע מערכת"


הד"

כותרת $

כותרת $

"


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

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


[me@linuxbox ~]$ foo="כן" [me@linuxbox ~]$ echo $foo כן

[me@linuxbox ~]$ echo $tip


[me@linuxbox ~]$

[me@linuxbox ~]$ foo="כן" [me@linuxbox ~]$ echo $foo כן

[me@linuxbox ~]$ echo $tip


[me@linuxbox ~]$


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



[me@linuxbox ~]$ echo $foo

[me@linuxbox ~]$ echo $foo


עובר הרחבת פרמטרים ומביא ל:



[me@linuxbox ~]$ הד כן

[me@linuxbox ~]$ הד כן


ואילו הפקודה:



[me@linuxbox ~]$ echo $fool

[me@linuxbox ~]$ echo $fool


מתרחב ל:



[me@linuxbox ~]$ הד

[me@linuxbox ~]$ הד


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



[me@linuxbox ~]$ foo=foo.txt [me@linuxbox ~]$ foo1=foo1.txt [me@linuxbox ~]$ cp $foo $שוטה

cp: אופרנד קובץ יעד חסר אחרי 'foo.txt'

[me@linuxbox ~]$ foo=foo.txt [me@linuxbox ~]$ foo1=foo1.txt [me@linuxbox ~]$ cp $foo $שוטה

cp: אופרנד קובץ יעד חסר אחרי 'foo.txt'


נסה את 'cp --help' למידע נוסף.

נסה את 'cp --help' למידע נוסף.


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

ישנם כמה כללים לגבי שמות משתנים:

1. שמות משתנים עשויים להיות מורכבים מתווים אלפאנומריים (אותיות ומספרים) ותווי קו תחתון.

2. התו הראשון של שם משתנה חייב להיות אות או קו תחתון.

3. אסור להשתמש ברווחים ובסימני פיסוק.

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



#! / bin / bash

# תוכנית לפלט דף מידע מערכת כותרת="דוח מידע מערכת עבור $HOSTNAME"הד"

$כותרת

$כותרת

"

#! / bin / bash

# תוכנית לפלט דף מידע מערכת כותרת="דוח מידע מערכת עבור $HOSTNAME"הד"

$כותרת

$כותרת

"


ניצלנו את ההזדמנות גם להגביר את התואר שלנו על ידי הוספת הערך של משתנה המעטפת

שם מארח. זהו שם הרשת של המכשיר.


תמונה

הערות: הקליפה למעשה מספקת דרך לאכוף את חוסר השינוי של הקבועים, באמצעות השימוש ב- לְהַכרִיז פקודה מובנית עם ה -r אפשרות (לקריאה בלבד). לו היינו מוקצים כותרת בדרך זו:


declare -r TITLE="כותרת עמוד"


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


תמונה


 

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