כיצד להשתמש ב- BASH for Loop



נסה את הכלי שלנו לביטול בעיות

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



ישנן דרכים רבות להתחיל לכתוב סקריפט, אך לדיון זה נניח שפתחת שורת פקודה על ידי חיפוש מסוף ב- Dash, על ידי לחיצה עליו בתפריטים KDE, MATE, LX או Whisker או על ידי לחיצה ממושכת על Ctrl, Alt ו- T בו זמנית. אמנם נדון ב- vi / vim וב- nano כעורכים, אך הנושא של איזה עורך להשתמש הוא אישי למדי ותוכל לעבוד עם כל מה שתרגיש בנוח.



שיטה 1: עד לולאה

אולי הלולאה הבסיסית ביותר בבאש היא לולאת ה- till. זה ימשיך לבצע פקודות עד שתנאי הבדיקה שהגדרת יתקיים. אנו נניח שהשתמשת ב- nano או vi כדי לפתוח קובץ שאינו קיים בשם עד.ש ומוכנים להכניס אליו טקסט טרי. פשוט נכין מסוף עד 20 במסוף שלך כדי שיהיה קל בהתחלה.



התחל על ידי הקלדת הדברים הבאים:

#! / bin / bash

n = 0



עד [$ n -gt 20]

לַעֲשׂוֹת

מהדהד $ n

((n ++))

בוצע

אם אתה משתמש בננו, שמור אותו על ידי לחיצה ממושכת על Ctrl ואז לחיצה על O ולבסוף על X כדי לצאת. משתמשים ב- vi ירצו לדחוף את הבריחה ואז הקלידו: wq כדי לשמור ולהפסיק.

הסוג הבא chmod + x עד לולאה בהנחיה להפוך אותו להפעלה ואז להקליד ./untilLoop להפעיל אותו. ברגע שהוא פועל, הלולאה תמשיך להדפיס מספרים חדשים במסוף שלך עד שהמשתנה n יגיע ל -20.

אגב, השורה הראשונה מספרת לסביבה שלך איזו קליפה להעמיס בעת עבודה עם סקריפטים אלה. מתכנתים מסוימים מייעצים להשתמש רק ב- #! / Bin / sh כדי להבטיח שהתסריט שלך עומד בסטנדרטים מסוימים של POSIX, אך לתסריטים פשוטים אלה לא אמורה להיות שום בעיה לפעול ברוב המכריע של המערכות המודרניות.

שיטה 2: עבור לולאה

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

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

#! / bin / bash

unices = 'GNU / Linux FreeBSD OpenBSD NetBSD Solaris Open אינדיאנה דרווין HP-UX Minix'

עבור יוניקס באחידות $

לַעֲשׂוֹת

הד $ יוניקס

בוצע

שמור את הקובץ שוב באמצעות Ctrl + O ואז שיטת Ctrl + X ב- nano או Esc ואז: wq בשיטת vi לפני הוצאת הפקודה chmod + x forLoop כדי להפוך אותו לביצוע. ברגע שיש לך, הפעל אותו על ידי הקלדה ./forLoop בהנחיה. לולאת ה- for מאלצת את פקודת ההד לעבוד על כל אחד מהפריטים במשתנה unices בתורו. אתה יכול, שוב, להחליף את הרשימה בכל טיעון ולהחליף הד בכל פקודה לאוטומציה של תהליכים ארוכים.

שיטה 3: לולאת זמן

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

בתוך הקובץ הזה, תרצה להוסיף את השורות:

#! / bin / bash

n = 0

ואילו [$ n -le 20]

לַעֲשׂוֹת

מהדהד $ n

((n ++))

בוצע

שמור את הקובץ באותו אופן שבו שמרת את האחרים ואז צא מעורך הטקסט שלך. לאחר שיצאת, הוצא את הפקודה chmod + x תוך כדי לולאה כדי לאפשר לך לבצע אותו ואז לרוץ ./ WhileLoop להפעיל אותו. תראה את אותה הפלט שיצאה מתסריט ה- tillLoop מהשיטה הראשונה שכן היא סופרת בין 0 ל -20 בסבירות השנייה ככל הנראה.

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

אל תהסס למחוק את התסריטים שלך לאחר שתסיים להתאמן איתם.

3 דקות קריאה