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

הערה : אם אנחנו רוצים לקבל טכני באמת, באש הוא לא פגז לינוקס בלבד. הרבה (אם כי אולי לא כל) של הבאות יחולו על כל סוג UNIX סוג, כולל Mac OSX ו BSDs.

שלום עולם

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

 #! / bin / bash echo שלום עולם! 

עם שתי שורות בלבד, זה לא יכול להיות הרבה יותר פשוט, אבל זה השורה הראשונה, #! / Bin / bash, לא יכול להיות ברור מיד. שני הדמויות הראשונות (הנקראות לעתים קרובות hashbang) הן אות מיוחד. זה אומר לינוקס כי סקריפט זה צריך להיות לרוץ דרך / bin / פגז פגז, לעומת פגז C או פגז קורן או כל דבר אחר שאולי התקנת. בלי זה, אין שום דרך קלה ללינוקס לספר בדיוק איזה סוג של סקריפט פגז זה. סקריפט פייתון, למשל, עשוי להתחיל עם משהו כמו #! / Usr / bin / python .

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

הפעלת הסקריפט שלך

כמו במקרים רבים עם לינוקס, ישנן דרכים רבות לעשות את העבודה. הדרך הבסיסית ביותר תהיה לקרוא bash באופן ידני ולהאכיל אותו קובץ script, כמו ב

 #Filename יכול להיות כל דבר, .sh הוא נוהג נפוץ עבור סקריפטים פגז. bash myscript.sh 

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

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

 chmod + x myscript.sh 

ועכשיו זה יכול להיות לרוץ עם שם הקובץ ישירות.

משתנים וארגומנטים

משתנים בבאש יכול להיות קצת יותר מבלבל מאשר כמה בשפות scripting אחרות, גם משום שהם לפעמים צריך להיות מראש עם אופי $ ולפעמים לא - תלוי מה אתה עושה. קח את הדוגמה הבאה.

 PathH = $ PATH: / home / josh / scripts 

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

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

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

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

Bash אוטומטית מקצה משתנים מסוימים בשבילך, כולל כמה כגון $ 1, $ 2 וכו 'אשר מחזיקים כל הארגומנטים עברו את התסריט. ניתן לשנות מחדש את המשתנים ולשנות את שמה לכל דרך שתרצה, כך שתוכל לכתוב מחדש את הסקריפט הקודם כ-

 #! / bin / bash firstname = $ 1 Lastname = $ 2 הד $ $ firstname $ Lastname! 

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

התניות ולולאות

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

 #! / bin / bash firstname = $ 1 Lastname = $ 2 אם ["$ firstname" == "Josh"] ואז מהדהד "איזה שם נהדר", הד אחר $ $ firstname $ Lastname! Fi 

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

 #! / bin / bash counter = 0 # בעוד שהמונה מונה פחות מ -10, המשך לולאה בזמן [$ counter -lt 50]; לעשות echo $ מונה מונה נגד = = 1 לעשות 

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

UNTIL פועלת באופן דומה, אך כהיפוך של WHILE. לולאה זמן ימשיך כל עוד הביטוי שלה נכון (מונה פחות מ 50). עד לולאה לוקח את הגישה ההפוכה, ויהיה כתוב כמו

 עד [$ counter -gt 50]; לַעֲשׂוֹת 

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

סיכום

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