
a=1.echo $a.echo "Hello $USER", כך שכל מי שמריץ את הסקריפט מקבל ברכה בשמו.$user ו-$USER הם שני משתנים שונים, בדיוק כמו שקבצים ב-Linux נבדלים לפי אותיות.מבנה ושמות דיסקים ומחיצות בלינוקס:

הטקסט המלא של הדקות הראשונות בהרצאה «משתנים ב-Script - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
זהו חלק ה' של כתיבת סקריפטים ללינוקס ושרתי יוניקס. בחלק ה' אני רוצה לעשות לכם היכרות ראשונית ובסיסית עם שימוש במושג או עם שימוש באובייקט מסוג משתנה או כמו שהוא נקרא באנגלית variable.
אז מה זה בעצם משתנה? מה זה ה-variable שאנחנו משתמשים בו בתוך הסקריפטים? דבר אחד אני יכול להגיד לכם בוודאות זה מאחרי הסרטון הזה שלכם אני מעריך שלא יהיה סקריפט שתכתבו ללא השימוש ב-variable.
אז מה זה בעצם וריבול? וריבול זה אובייקט שיכול, יודע להחזיק עבורי מידע בתוכו. האובייקט הזה יכול להחזיק מידע לזמן ארוך, כלומר לאורך כל ההרצה של הסקריפט, ואז אני יכול להשתמש במידע שבתוכו מתי שבא לי.
אותו אובייקט או אובייקט אחר יכול להחזיק מידע לתקופה קצרה. אותו אובייקט יכול להחזיק מספר, הוא יכול להחזיק מספרים, הוא יכול להחזיק שורה, הוא יכול להחזיק אפילו 20 שורות של מידע בתוכו.
יכול להחזיק בתוכו כמעט כל סוג של מידע שאנחנו רוצים. ולמה זה טוב? למה אני צריך משתנים?
הייתי רוצה להתחיל מהסוף להתחלה. כמעט ואין מצב, או כמעט ולא יהיה סקריפט שתכתבו, סקריפט כמובן מתוחכם, שלא תצטרכו להשתמש במשתנה.
אתם פשוט תהיו חייבים משתנה. עכשיו, למה? אז המון פעמים הסקריפט שלנו צריך להציג מידע קצת שונה במצבים מסוימים. למשל, תחשבו על סקריפט שכשאני מפעיל אותו, הייתי רוצה שהוא ידע את ה-login name שלי, את היוזר שהשתמשתי בו, כדי שכשהוא מתחיל לעבוד יגיד לי בוקר טוב ג'ונס
למשל. איך הוא ידע שאני ג'ונס? לפי זה שהוא משתמש במשתנה שכבר קיים במחשב, שבתוכו רשום שם המשתמש שעשה לוגין. לפעמים אנחנו נרצה לעשות איזשהו חישוב מתמטי.
לפעמים הסקריפט, ושוב פעם, בחישובים מתמטיים אנחנו נצטרך לשנות את המידע בתוך איזשהו מיכל מסוים, מיכל או אובייקט, איך שתרצו לקרוא לו, שכל פעם המידע הזה משתנה בתוכו. למשל, יש את המספר 10, ואני רוצה כל כמה שניות להוריד 1 מ-10 ולהיות
שזה יהיה 9, ואז 8 ואז 7, וכל פעם להשתמש במספר השונה הזה מתוך אותו משתנה. סיבות אחרות יכולות להיות: לפעמים אנחנו צריכים להחזיק מידע שהסקריפט מוצא, והוא צריך להשתמש בו בהמשך של הסקריפט, להשתמש בו במהלך הריצה של הסקריפט.
כלומר, בתחילת הסקריפט, הסקריפט מצא איזשהו מידע שהוא יכול למצוא רק בהתחלה, למשל, נקודת הזמן שהוא התחיל. הוא לא יכול אחרי שעה להגיד מה היה לפני שעה.
זה לא חכם, זה לא רציני. אז אני רוצה את נקודת הזמן שהוא התחיל, ואז בסוף לכתוב לי כמה דקות לקח לו לרוץ לצורך העניין. סתם דוגמה.
ועוד כאלה וכאלה דברים, יש שאתם מבינים את הרעיון. חיסכון בכתיבה חוזרת של פקודות. הרבה פעמים אני יכול לדחוף Output של פקודה לתוך משתנה, ומתי שבא לי פשוט להכניס את המשתנה. אז תגיד לי, מה, ג'ונס, כבר אתה מסתלבט?
תעשה פשוט copy-paste לשורות. כן, אבל השורה היא שורה ארוכה מאוד. למה שיהיו לי שורות ארוכות אם אני יכול את השורה הזו להכניס את כל-כולה לתוך משתנה אחד? משתנה אחד, A, B, C. צד שני, המשתנים, אם תשתמשו בהם יותר מדי, אז כל הסקריפט שלכם ייראה כולו A, B, I, C, Y, ואתם, יהיה לכם לפעמים יותר קשה להבין מה עשיתם
פה. אז גם להשתמש בווריבוס יותר מידי צריך להירגע, מה שנקרא, תירגעו על החיים שלכם ואל תשתוללו עם זה.
אבל עדיין חשוב מאוד להשתמש בזה כדי לחסוך בזמן, כדי לחסוך במידע שיש לי בסקריפט, כדי להפוך את הסקריפט ליותר אוורירי, יותר מהיר. ושוב פעם, אני מגיע לסוף, איפה שהתחלתי.
כמובן שלפעמים אין ברירה, חייבים פשוט להשתמש במשתנה. הנה עוד טעות פה, ברשותכם.
חייבים פשוט להשתמש במשתנה, אין ברירה אחרת, ועוד ועוד ועוד, ובאמת אתם תראו שכל פעם שנרוץ עם הקורס הזה, אתם תראו שיהיה לכם איזשהו רעיון איפה אתם יכולים לדחוף פה משתנה ושם משתנה וכו', ומגליל. ואז נשאלת השאלה, איך נראה משתנה, איך אני דוחף מידע למשתנה, נשמע קצת לא כל כך טוב, מכרתי במילה דוחף מידע למשתנה,
איך אנחנו מכניסים מידע למשתנה? מאוד מאוד פשוט. המשתנה שלנו כמובן זה איזשהו, אתם יודעים, איזשהו אות בדרך כלל, למשל ABC, אני יכול גם לתת שם, Hello, How are you, Whatever, אני יכול לקרוא לזה במה שאני רוצה, User, אני יכול לקרוא לזה Computer,
אני יכול לקרוא למשתנה איך שבא לי. כרגע בחרתי רק באות כדי להפוך את זה כמה שיותר קצר ולעניין, אז אני עושה את האות שווה 1. מה שזה אומר, זה אומר למחשב לשרת, בסקריפט A הוא בעצם שווה 1. כל פעם שאני אשתמש במשתנה הזה A, אני בעצם מקבל, אני משתמש בספרה 1. אני יכול לדחוף ל-A
הזה החלטתי לדחוף לו אני יכול לדחוף לו Hello אני יכול לדחוף תוכן של קובץ אנחנו נראה את הכל אנחנו יכולים להכניס למשתנה כל מה שבא לנו אחרי שהכנסנו למשתנה משהו והפכנו אותו למכולה שמכילה אינפורמציה איך אני מציג את האינפורמציה מאוד פשוט דולר סליחה והשם של המשתנה אבל איך אקו דולר והשם של המשתנה ככה אני בעצם מציג את התוכן של המשתנה על המסך
אבל אם אם אתם רוצים פשוט להשתמש במשתנה ובתוכן שלו, להשתמש בזה בתוך הסקריפט, כל מה שאתם צריכים זה פשוט להשתמש בדולר והשם של המשתנה, במקרה שלי דולר A. אז אני יכול ליצור משתנים בעצמי, ואנחנו נעשה את זה עוד רגע,
נעשה הרבה מזה, אבל יש גם משתנה מערכת, יש משתנים שיש לכם בתוך הלינוקס מתנה, קיבלתם משתנים שכבר קיימים, שאתם יכולים להשתמש בהם בסקריפט.
אתם יכולים לקרוא להם, הם כבר קיימים, מישהו כבר עשה אותם בשבילנו. אתם משתמשים בפקודה set או בפקודה env אלה שתי פקודות שיציגו לכם את רשימת כל המשתנים שמגיעים עם מערכת הפעלה מה זה המשתנים האלה המשתנים האלה למשל מחזיקים את זה שעושה לוגין הם מחזיקים את שם המחשב הם מחזיקים את המיקום שלכם בדיסק הם מחזיקים המון המון את הקרן
המון מידע שכבר בלינוקס ויוניקס חשבו כבר שתרשמו סקריפטים אתם תרצו לקרוא למידע הזה אבל תחשבו בעצמכם לינוקס לא יודעים איזה יוזר יעשה לוגין לינוקס לא יודעים על איזה שרת איזה תתקינו אז איך זה שיכול להיות שהלינוק שמותקן יודע להביא לי את ההרדוור את האישוס פשוט
מאוד ישנם פקודות שרצות שהשרת עולה שמייצרות את אותם משתנים בהתאם למידע שהם מושכות מהמערכת אנחנו נראה את זה אז תזכרו שיש משתנים שאנחנו יוצרים בעצמנו יכולים להציג את התוכן של המשתנה ושגם להשתמש במשתנה כמובן ויש משתנים של מערכת ההפעלה זה לא לשכוח שמשתנים הם case sensitive.
אז דולר יוזר ודולר יוזר קטן וגדול זה לא אותו דבר. דולר יוזר גדול ודולר יוזר קטן, שוב פעם, אנחנו יודעים שבלינוקס הכל הכל הכל זה case sensitive.
קבצים, דגיות, יוזרנם, פסוורד, הכל חייב להיות בהתאם לאיך שהוא מוצג case sensitive.
אז בואו ניגש למלאכה, בואו נעבוד עם איזה סקריפט חדש שניצור ביחד, אבל הפעם משלב בתוך הסקריפט הזה משתנים.
הדבר הראשון שאני רוצה להראות לכם זה את המשתנה מערכת שסיפרתי לכם עליהם. אז אם תעשו את הפקודה set, יכולים לראות שהפלא ופלא, יש פה המון המון המון משתנים שמישהו כבר יצר עבורי.
למשל, יש לנו משתנה שהוא ssh-tty. מה ssh-tty שכרגע נכנסתי לשרת? יש לי משתנה שנקרא אותיות גדולות user, שהוא בעצם הuser שעשה לוגין בשרת. יש לי את ה-pwd שזה המיקום שלי בשרת כשאני נכנס אליו ואם תעשו env יש לכם עוד עוד המון המון למשל התיק יד בית שלי אוקיי איזה של אני עובד איתו כלומר כשהמחשב שלכם עולה ואתם עושים
לוגין יש שורה של פקודות שמייצרות משתנים עבורנו שכוללים בתוכם מידע כזה או אחר עלינו על המחשב וכו וכו למשל ה language אנחנו משתמשים בו וכו אז אני יכול לקרוא לאותם משתנים אני פשוט יכול לקרוא להם הם קיימים למה לא לקרוא להם למשל אז בואו בואו נכתוב את הסקריפט הראשון שלנו. וברשותכם, אני כבר הרשיתי לעצמי ליצור טמפלט, cptemplate לסקריפט 5.sa, שפשוט מעתיק את
הטמפלט. עכשיו, הפלא ופלא, ניכנס לסקריפט 5, והסקריפט 5 שלנו כבר יש בו, מוכן, כמו לקוסמטיקה שדיברתי עליה עוד בסשן השני והשלישי.
נחמד מאוד שאתם מייצרים סקריפט עם variables שיהיה לכם בהתחלה של הסקריפט יש רשימת כל ה-variables שאתם הולכים להשתמש בהם. כדי שתדעו איזה variables יש לכם בסקריפט.
עוד רגע אנחנו נמלא את המידע הזה. אז בפארט הראשון הייתי רוצה פשוט להציג לכם, create new variable, אני רוצה להציג לנו איך יוצרים variable חדש.
איך אני יוצר variable? כמו שאמרתי לכם, a שווה 1, b שווה 5, computer name שווה, בוא ניתן איזה, computer name, נקרא לזה my computer name שווה, לינוקס 1,2,3 ומיי קומפיוטר ניים שווה בואו נכניס לו בעצם עשיתי פה בתוך הסקריפט שלי עכשיו אני בונה משתנים a למשל שווה 1 b שווה 5 מיי קומפיוטר ניים שווה
לינוקס 1,2,3 ומיי קומפיוטר ניים 2 שווה את האוטפוט של הפקודה עכשיו בואו נריץ את הסקריפט הזה נראה מה יקרה כמובן שלא לשכוח לשים את ההרשאות הסקריפט שלנו, ועכשיו בואו נריץ את הסקריפט.
מה אתה חושב שיקרה עכשיו לפי דעתכם? תכף שנייה לחשוב. לא יקרה כלום, חברים. לא יקרה כלום, כי מה שיקרה בעצם, הסקריפט ייצור את המשתנים האלה, אבל אני לא יודע מה קורה, כי כאילו אני לא מציג שום דבר, אבל בואו נבדוק את זה.
לא קרה כלום. מה בעצם קרה? הסקריפט יצר משתנים, אבל אני לא ראיתי את המשתנים האלה. אז בואו נציג את המשתנים האלה, בואו נציג אותם כדי שנראה את התוכן של המשתנים.
אז איך אנחנו מציגים משתנים? רק ברשותכם, תנו לי להעתיק את זה פה. יש לי דיספליי יותר יפה מישור, לא משנה.
ואיך אני עכשיו מציג את אותם משתנים? מאוד פשוט: ECHO, DOLLAR, DOLLAR A, ECHO, DOLLAR B, ECHO, DOLLAR. ברשותכם, בואו נעתיק את זה עכשיו. כשאתם רוצים להציג את התוכן של המשתנה שלכם, חבר'ה, תהיו סבלניים, כי עוד רגע תראו דברים הרבה יותר יפים.
כשאתם רוצים להציג את התוכן של המשתנים שבניתם, אתם עושים את זה על ידי הפקודה אקו ואז אתם מצרפים דולר למשתנה שבניתם. תזכרו בבקשה, הרבה טועים בהתחלה ויוצרים לי את המשתנה יחד עם דולר, זה לא יעבוד.
אתם צריכים ליצור את המשתנה בלי שום דולר. כשאתם באים להציג את המשתנה אתם צריכים לחבר אליו את הדולר. בואו נראה למה אני מתכוון, בבקשה. הצגנו אחד, הצגנו חמש, הצגנו את הזה, זה אני אפילו מציג את התוכן של המשתנים האלה.
בואו נכניס קצת פלפל לתוך הסקריפט שלנו. אני לא יודע אם זה פלפל, אבל באיזה מלח.