איך לכתוב BASH "לולאה"

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

BASH (המייצג את Bourne Again Shell) היא שפת scripting המשמשת ברוב מערכות ההפעלה לינוקס ו- UNIX.

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

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

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

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

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

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

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

לפני תחילת העבודה

לפני שתתחיל עם דוגמאות לולאה, עליך לפתוח חלון מסוף ולבצע את השלבים הבאים:

  1. הזן סקריפטים mkdir ( למידע נוסף על mkdir כאן )
  2. הזן סקריפטים cd (זה משנה את הספרייה סקריפטים )
  3. הזן נפל examplen.sh (כאשר n הוא הדוגמה שאתה עובד על)
  4. הזן את הסקריפט
  5. הקש על CTRL + O כדי לשמור ו- CTRL + X כדי לצאת
  6. הפעל Bashplen.sh באש (שוב, עם n להיות הדוגמה שאתה עובד עם)

כיצד לולאה דרך רשימה

#! / bin / bash
מספר 1 1 2 3 4 5
לַעֲשׂוֹת
מספר echo $
בוצע
יציאה 0

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

ב BASH "עבור" לולאה כל, ההצהרות בין לעשות לעשות מבוצעות פעם אחת עבור כל פריט ברשימה.

בדוגמה לעיל, הרשימה היא כל מה שמגיע אחרי המילה (כלומר 1 2 3 4 5).

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

הצהרת ההד משמשת להצגת מידע על המסך.

לכן, דוגמה זו לוקחת את המספרים 1 עד 5 ומפיקה אותם אחד אחד למסך:

כיצד לולאה בין נקודת התחלה וסיום

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

זה מביא אותנו אל הדוגמה השנייה אשר מראה כיצד להגדיר נקודת התחלה וסיום:

#! / bin / bash
למספר {1..10}
לַעֲשׂוֹת
הד "$ number"
בוצע
יציאה 0

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

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

דוגמה זו, אם כן, עוברת דרך כל מספר בין 1 ל -10 ומפיקה את המספר למסך כדלקמן:

אותה לולאה היתה יכולה להיכתב כך, עם תחביר זהה לדוגמה הראשונה:

מספר 1 1 2 3 4 5 6 7 8 9 10

כיצד לדלג על מספרים בטווח

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

תאר לעצמך שאתה רוצה לולאה בין 0 ל 100 אבל רק להראות כל מספר עשירית. הסקריפט הבא מראה כיצד לעשות בדיוק את זה:

#! / bin / bash
למספר {0..100..10}
לַעֲשׂוֹת
הד "$ number"
בוצע
יציאה 0

הכללים הם בעצם אותו הדבר. יש רשימה, משתנה, ומערכת של הצהרות שיש לבצע בין לעשות לעשות . הרשימה הפעם נראית כך: {0..100..10}.

המספר הראשון הוא 0 ומספר הסיום הוא 100. המספר השלישי (10) הוא מספר הפריטים ברשימה שהוא ידלג עליהם.

הדוגמה לעיל, אם כן, מציגה את הפלט הבא:

מסורתי יותר מחפש לולאה

אופן הכתיבה של BASH עבור לולאות הוא קצת מוזר בהשוואה לשפות תכנות אחרות.

עם זאת, ניתן לכתוב לולאה בסגנון דומה לשפת התכנות C, כך:

#! / bin / bash
((מספר = 1, מספר <100, מספר ++))
{
אם (($ number% 5 == 0))
לאחר מכן
הד "$ מספר הוא מתחלק על ידי 5"
Fi
}
יציאה 0

הלולאה מתחילה על ידי הגדרת מספר המשתנה ל- 1 (מספר = 1 ). לולאה תמשיך איטרטינג בעוד הערך של מספר הוא פחות מ 100 ( מספר <100 ). הערך של מספר משתנה על ידי הוספת 1 אליו לאחר כל איטרציה ( מספר + + ).

הכל בין הפלטה המתולתל מתבצע דרך כל איטרציה של הלולאה.

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

לדוגמה:

אם אתה רוצה לשנות את גודל הצעד של איטרציה אתה יכול לתקן את מספר + + קטע להיות מספר = מספר + 2 , מספר + מספר + 5 , או מספר + מספר + 10 וכו '

זה יכול להיות מופחת עוד יותר למספר + = 2 או מספר + = 5 .

דוגמה מעשית

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

הדוגמה הבאה מראה כיצד להמיר קבצי שמע מ- MP3 ל- WAV :

#! / bin / bash

הרשימה בדוגמה זו היא כל קובץ עם הסיומת .MP3 בתיקייה הנוכחית והמשתנה הוא קובץ .

הפקודה MPG ממיר את קובץ ה- MP3 ל- WAV. עם זאת, אתה כנראה צריך להתקין את זה באמצעות מנהל החבילה שלך הראשון.