PracticU

סקריפט עם לולאת while

בלי כתוביותעם כתוביות
PracticU › קורס לינוקס למתקדמים - הסמכה בינלאומית - Linux - Red Hat - RHCSA / RHCE › סקריפט עם לולאת while
מילון מושגים:
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.

סקריפט עם לולאת while
לולאת while מריצה פקודה שוב ושוב כל עוד תנאי מסוים מתקיים. כך אפשר לבצע משימה חוזרת, למשל פעולה על כל שרת ברשימה, בלי לכתוב את אותו קוד שוב ושוב בתוך הסקריפט.
מבנה הלולאה
1. הגדרת התנאי: הלולאה נפתחת במילה while ואחריה תנאי, למשל while [ $a -le 10 ]. כל עוד התנאי נכון, הפקודות שבין do ל-done יתבצעו שוב.
2. הגדלת המונה: בתוך הלולאה מוסיפים אחד למשתנה, למשל a++. בלי השורה הזו המשתנה נשאר קבוע, התנאי תמיד נכון והלולאה לא נגמרת. המרצה מדגים את הטעות הזו בשיעור.
3. סיום הלולאה: כשהתנאי לא מתקיים עוד, הביצוע עובר לשורה שאחרי done.
ספירת ערכים שהמשתמש הזין
1. מספר הערכים: $# מחזיר את כמות הפרמטרים שהמשתמש הזין לסקריפט. ה-$# משמש כתנאי לגבול הלולאה.
2. הזזת הערכים: הפקודה shift מוציאה את הערך הראשון מהרשימה, כך שהערך הבא מופיע ב-$1.
3. ביצוע על כל ערך: בתוך הלולאה מבצעים את הפעולה על $1, ואז מזיזים את הרשימה בעזרת shift. כך כל ערך מטופל פעם אחת.
שימו לב
כדאי לוודא תמיד שהמונה מתקדם בכל סיבוב, אחרת הלולאה לא תיעצר. בשיעור אפשר לראות גם הדגמה של הד (echo) שמודפס עשר פעמים, ככה שהמספר נבדק בקלות בעזרת wc -l.
אחרי השיעור תוכלו לכתוב סקריפט שמבצע פעולה על כל ערך שהמשתמש מזין.
השיעור הבא בקורס: סקריפט עם לולאת for
לחץ כאן להורדת הורדת קבצי Script של לינוקס שהיו בסרטים
מילון מושגים:
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
מחיצה - חלוקה לוגית של דיסק פיזי לאזורים נפרדים, שכל אחד מתפקד כאילו הוא כונן עצמאי.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
דומיין - תחום ניהולי משותף של מחשבים ומשתמשים ברשת ארגונית, המנוהל מרכזית. גם שם ייחודי של אתר באינטרנט.
אימות - תהליך שמוודא שהמשתמש או המערכת הם מי שהם טוענים שהם, בדרך כלל באמצעות סיסמה, קוד או תעודה.
Active Directory - שירות מדריך של מיקרוסופט לניהול מרכזי של משתמשים, מחשבים והרשאות ברשת ארגונית מבוססת דומיין.
GPO - אובייקט מדיניות קבוצתית ב-Active Directory, שמכיל הגדרות ומדיניות המוחלות על משתמשים ומחשבים.


מבנה ושמות דיסקים ומחיצות בלינוקס:


(Sda (disk0): זה הדיסק הפיזי הראשון (SATA DISK)

(Sda1,Sda2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי הראשון.

(Sdb (disk1): זה הדיסק הפיזי השני כמו בוינדוס Disk1

(Sdb1,Sdb2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי השני.

מחיצת השורש הראשונה:

וינדוס: C

לינוקס: /

מחיצות נוספות:

וינדוס: D: / E:

לינוקס: /data /example כמו תיקיות.

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

מטרת צירוף לינוקס לדומיין הינה לאימות משתמשים מתוך Active Directory בלבד ואין GPO  ללינוקס דרך AD.


הוכן ע"י התלמיד המצטיין: אברהים אבו שיכה

פרקי ההרצאה: סקריפט עם לולאת while

  1. 00:00

    למה צריך לולאות בסקריפט

  2. 00:59

    לולאות while ו-for

  3. 01:38

    ping לכמה שרתים בלי לולאה

  4. 02:56

    המבנה של לולאת while

  5. 03:53

    קביעת מספר הריצות בתנאי

  6. 05:01

    דוגמת while עם A++

  7. 06:20

    יצירת script9 מה-Template

תמלול ההרצאה: סקריפט עם לולאת while

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

  1. 00:20

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

  2. 00:33

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

  3. 00:52

    אחד הפונקציות המאוד חשובות היא באמת הפונקציה של לעשות לולאה Loop בסקריפטים ושוב פעם כאשר נבקש לחזור על אותה פעולה יותר מפעם אחת נצטרך להשתמש בלולאה מסוג מסוים יש מספר לולאות יש לולאת while זה הלולאה הראשונה שאני אציג לכם ויש לולאת for זה הלולאה

  4. 01:14

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

  5. 01:46

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

  6. 02:06

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

  7. 02:33

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

  8. 02:43

    אז הלולאה, מה שהיא יודעת לעשות, אני נותן ללולאה את הטווח שבו היא רצה, למשל לרוץ 10 פעמים, 20 פעם, 30 פעם, וואטאבר, ולעשות a, b, c, d, אוקיי?

  9. 03:10

    אז בואו נתחיל עם שימוש בלולאת while. מה זה בעצם לולאת while? while נראית ככה while condition מסוים מתקיים, את הדברים הבאים תעשה את הדברים הבאים command a command b command z ו done תפסיק תסיים זה הרעיון של לולאת while פשוט ישר ולעניין באמת פקודה מאוד פשוטה ונחמדה שהיא מאוד מאוד חזקה כמה שהיא פשוטה ככה היא הרבה

  10. 03:37

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

  11. 03:59

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

  12. 04:25

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

  13. 04:55

    גורם לבצע את אותה פעולה 10 פעמים אז אני עושה A שווה 1 אז אני אומר while, כמובן לא צריך פה דעות גדולות, while, פותח סוגריים מרובעים, דולר A, שזה המשתנה שלנו שיצרנו פה, is less or equal to 10, do the following command: echo Hello World.

  14. 05:26

    ומה שקורה פה בעצם, שימו לב, שמתי את זה באדום ואז אני עושה עוד שורה מאוד מאוד מאוד מאוד מאוד חשובה, וזו השורה שבעצם היא המנוע של ה-Y, המנוע, והיא אומרת A++, כלומר אני כל פעם אוסיף אחד ל-A, אז מה שקורה זה הדבר הבא, כל עוד a הוא less or equal ל-10, תעשה את הדברים הבאים:

  15. 05:47

    echo אל הוורד ו-a פלוס 1, ו-done. אבל done הוא לא יסיים עד שהוא לא מסיים את הלולאה. אז מה שיקרה הוא ירוץ פעם אחת, יוסיף אחד ל-a, a כבר שווה 2, ירוץ פעם שנייה, a שווה 3, ירוץ פעם שלישית, a שווה 4, 5, 6, 7, 8, 9, 10, and then a שווה 11, פה הוא יקפוץ ל-done, ואז 10 פעמים הוא ירוץ.

  16. 06:13

    אוקיי בואו נעשה את זה בואו נעשה לולאה שעושה עשר פעמים משהו מסוים שאנחנו מבקשים ממנה לעשות אז בואו ניצור את הסקריפט מספר 9 שלנו אז שוב פעם נחזור לטמפלט שלנו cp טמפלט אז בואו עכשיו אני אראה שאני הולך להשתמש במשתנה a נכון

לקורס המלא: קורס לינוקס מתקדם אונליין

ההרצאה הקודמת: דוגמאות לסקריפט שימושי

ההרצאה הבאה: סקריפט עם לולאת for

הרצאות קשורות מקורסים אחרים

  • לולאת Do - While
  • לולאת While
  • לולאת while בקורס JAVA
  • לולאות While - חלק 1

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell