מדריך למתחילים כדי BASH - פרמטרים קלט

ברוכים הבאים חלק 2 של המדריך למתחילים BASH סדרה אשר ייחודי בכך שהוא המדריך BASH רק נכתב על ידי מתחילים למתחילים.

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

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

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

מה זה פרמטר?

ב "שלום העולם" התסריט מן האחרון הדרכה זה היה כל סטטי מאוד. התסריט לא ממש עשה הרבה.

איך נוכל לשפר את התסריט "שלום עולם"?

מה עם תסריט שמברך את האדם שמנהל אותו? במקום לומר "שלום עולם" זה אומר "שלום גארי", "שלום טים" או "שלום דולי".

ללא היכולת לקבל פרמטרים קלט היינו צריכים לכתוב שלושה תסריטים "hellogary.sh", "hellotim.sh" ו "hellodolly.sh".

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

לשם כך פתח חלון מסוף (CTRL + ALT + T) ונווט לתיקיית הסקריפט על ידי הקלדת הפרטים הבאים: ( אודות הפקודה cd )

סקריפטים

צור סקריפט חדש הנקרא greetme.sh על ידי הקלדת הפרטים הבאים: ( אודות פקודת מגע )

גע

פתח את התסריט בעורך האהוב עליך על ידי הקלדת הפרטים הבאים: ( על הפקודה nano )

nano greetme.sh

הזן את הטקסט הבא בתוך nano:

#! / bin / bash echo "שלום $ @"

לחץ על CTRL ו- O כדי לשמור את הקובץ ולאחר מכן על CTRL ו- X כדי לסגור את הקובץ.

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

sh greetme.sh

אם אני מפעיל את התסריט עם השם שלי הוא מציג את המילים "שלום גארי".

השורה הראשונה כוללת את השורה #! / Bin / bash המשמשת לזיהוי הקובץ כתסריט bash.

השורה השנייה משתמשת בהצהרת הד להדהד את המילה hello ולאחר מכן יש את $ @ notation מוזר. ( על הפקודה הד )

$ @ מתרחב להצגת כל פרמטר שהוזן יחד עם שם הסקריפט. אז אם הקלדת "sh greetme.sh Tim" את המילים "שלום טים" יוצג. אם הקלדת "greetme.sh Tim smith" ואז את המילים "שלום טים smith" יוצג.

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

בואו נשנה את הסקריפט כך שהוא פשוט ישתמש בפרמטר הראשון. פתח את התסריט greetme.sh ב- nano על ידי הקלדת הפרטים הבאים:

nano greetme.sh

שנה את הסקריפט כך שהוא יקרא כדלקמן:

#! / bin / bash echo "שלום $ 1"

שמור את התסריט על-ידי הקשה על CTRL ו- O ולאחר מכן על-ידי הקשה על CTRL ו- X.

הפעל את הסקריפט כפי שמוצג למטה (החלף את השם שלי בשמך):

gary newell גארי

כאשר אתה מפעיל את התסריט זה פשוט אומר "שלום גארי" (או אני מקווה "שלום" ואת מה שמך.

1 אחרי הסמל $ בעצם אומר הפקודה הד, השתמש בפרמטר הראשון. אם תחליף את $ 1 עם $ 2 אז זה יציג "שלום newell" (או מה את שם המשפחה שלך).

אגב, אם תחליף את $ 2 עם $ 3 ורץ את התסריט עם רק 2 פרמטרים הפלט יהיה פשוט "שלום".

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

כדי להציג את מספר הפרמטרים שהוזנו לפתוח את התסריט greetme.sh (nano greetme.sh) ולשנות את הטקסט כדלקמן:

#! / bin / bash echo "הזנת $ # names" echo "hello $ @"

לחץ על CTRL ו- O כדי לשמור את התסריט ו- CTRL ו- X כדי לצאת מה- nano.

# $ בשורה השנייה מציג את מספר הפרמטרים שהוזנו.

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

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

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

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

פתח את התסריט greetme.sh שלך לתקן את זה כדלקמן:

#! / bin / bash echo "שם הקובץ: $ 0" echo "מזהה התהליך: $$" הד "---------------------------- --- "הד" אתה נכנס $ # שמות "הד" שלום $ @ "

לחץ על CTRL ו- O כדי לשמור את הקובץ ו- CTRL ו- X כדי לצאת.

עכשיו הפעל את התסריט (להחליף את השם שלך).

sh greetme.sh

הפעם התסריט מציג את האפשרויות הבאות:

שם הקובץ: greetme.sh מזהה התהליך: 18595 ------------------------------ הזנת שני שמות שלום gary newell

ה- $ 0 בשורה הראשונה של הסקריפט מציג את שם הסקריפט שבו אתה משתמש. שים לב כי הוא אפס דולר ולא דולר o.

ה- $$ על הקו השני מציג את מזהה התהליך של הסקריפט שבו אתה משתמש. למה זה שימושי? אם אתה מפעיל סקריפט בחזית אתה יכול לבטל את זה פשוט על ידי לחיצה על CTRL ו- C. אם אתה רץ את התסריט ברקע וזה התחיל לולאה עושה את אותו הדבר שוב ושוב או התחיל לגרום נזק למערכת שלך היית צריך להרוג אותו.

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

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

זה די נפוץ עבור פלט script להיות כתוב לקובץ פלט. לשם כך הפעל את הסקריפט שלך באופן הבא:

sh greetme.sh גארי> greetme.log

סמל> בפקודה לעיל פלט את הטקסט "שלום גארי" לקובץ שנקרא greetme.log.

בכל פעם שאתה מפעיל את התסריט עם הסמל> הוא מחליף את התוכן של קובץ הפלט. אם אתה מעדיף לצרף את הקובץ להחליף את> עם.

סיכום

עכשיו אתה אמור להיות מסוגל לכתוב טקסט למסך ולקבל פרמטרים קלט.