תכנות בבאש - חלק 2

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

ה- If מותנה

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

אם [תנאי]; ואז אליף פקודות [תנאי]; ואז פקודות אחרות; פקודות fi

דוגמה מוצגת ליד הלולאה For בקטע המתאים לה.

מחזורים

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

בעוד ש- CONDITION / COMMAND מבצעים פקודות

דוגמה: לוח כפל של מספר

#! / bin / bash X = 1 הד "הזן מספר ולחץ על ENTER" קרא M # הלולאה שולטת ש- X קטן או שווה ל- 10 בעוד [$ X –le 10] בצע # In R אנו מאחסנים את הכפל של X על ידי MR = $ [X * M] # הכפל זה מודפס על הד המסך "$ M * $ X = $ R" # עם let, אנו מגדילים את ערך ה- X ביחידה אחת בואו X = $ X + 1 נעשה

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

עבור VARIABLE ב- ELEMENTS מבצעים פקודות

דוגמה: תוכנית שמעתיקה קובץ מתיקיה אחת לאחרת, ומחליפה קובץ ישן.

# / bin / bash # אנו מקימים ספריות מקור ויעד ORIGIN = / home / user / הורדות DESTINATION = / home / user / Documents # אנו ממקמים את עצמנו בתקליטור המקור $ ORIGIN # מכל הקבצים, אנחנו רק רוצים את זה הוא # call FILE for FILE ב- * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f מסנן לנו קבצים רגילים, מכיוון שספריות # לא טובות עבורנו. –לא מסנן # קבצים “חדשים” יותר מאלה שנמצאו בתיקיית היעד אם [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; ואז מהדהד "העתקת $ FILE ..." # אנו מעתיקים את הקובץ עם cp cp $ FILE $ ARCH-DESTINATION fi done # אנחנו cd כדי לצאת מתיקיית המקור cd

דוגמא נוספת: סקריפט שבו על המשתמש לנחש מספר אקראי שנוצר על ידי המחשב.

# / bin / bash # מספר אקראי נוצר מ -1 עד 10, הוא # נשמר ב- RANDOM RANDOM = $ [$ RANDOM% 10 + 1] ואילו [1] לעשות הד –נ "הזן מספר:" קרא NUM # השווה אם המספר שבחר המשתמש הוא שווה ל- RANDOM; זכור להשתמש ב- $ כדי להעריך את # הערכים של המשתנים ולא את שמותיהם אם ["$ NUM - שווה ערך" $ RANDOM "]; ואז מהדהד "הבנתם נכון!" #break מאפשר לסיים את הלולאה בזמן הפסקה # אם המספר נמוך מ- RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; ואז הד "זה קטן יותר" "אם לא, הוא גדול יותר מ- RANDOM אחר מהדהד" זה גדול יותר "נעשה

3. עד: די דומה במבנהו ל- While, אלא שהקוד תמיד מבוצע בזמן שהערכת התנאי היא שלילית, כלומר התוכנית ממשיכה לבצע "עד שהמצב מתרחש"

עד ש- CONDITION / COMMAND מבצעים פקודות

דוגמה: הדפיסו את המספרים 10-20 בסדר יורד

#! / bin / bash CONT = 20 # כל עוד הדלפק קטן מ- 10 (-lt, "נמוך יותר מ-") הקוד מבוצע עד [$ CONT -lt 10]; לעשות הד "COUNTER $ CONT" # A CONT מופחת על ידי יחידה בוא CONT- = 1 נעשה

4. בחר: מחזור אחרון זה הוא מקרה מיוחד, מכיוון שהוא משמש בדרך כלל להכנת תפריטים במהירות. זה עובד בדומה לולאת ה- For.

בחר VARIABLE ברשימת הפקודות שבוצעו

דוגמה: תן למשתמש את היכולת להמשיך או לסיים את הסקריפט.

#! / bin / bash #item הוא משתנה המגיב למה שהמשתמש # בוחר, המשך וסיום הם # האפשרויות העומדות בפניו, אם כי ניתן להוסיף אפשרויות אחרות # פריט נוסף בחר ב- Continue Finish עשה # אם המשתמש בוחר לסיים את התוכנית, ואז עם הפסקה אנו יוצאים מהמחזור. אם [$ item = "Finish"]; ואז לשבור את הפי
תודה לך חואן קרלוס אורטיז!

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   בינוני קשה דיג'ו

    אני חושב שמשהו כזה: tar -cf - Directory | (cd / other / directory; tar -xvf -)

    ואז זה ייראה כמו / אחר / ספרייה / מדריך
    בדרך זו דחסתי מדריך ואתה דוחס אותו מחדש במקום אחר ....

  2.   מיגל אנחל דיג'ו

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

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

    עד כה יש לי את הדברים הבאים:

    תוך כדי שורת קריאה
    do
    הד - e "קו $"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    נעשה <testlist.txt עד עכשיו קראתי את הקובץ, כל שורה שיש בו, אבל אני לא יכול לגרום לו לחפש את הקובץ הזה ולחלץ את המידע, אם אתה יכול לעזור לי בבקשה, תודה. לחיים

  3.   פמלה גלביז דיג'ו

    תודה רבה על התרומה 🙂

  4.   מריו חאבייר דיג'ו

    היי ... אני מקווה שתוכלו לעזור בתרגול הבא ... לפתוח את הקובץ ב- tgz בספריה שצוינה, בנוסף לציין משתמש וקבוצה לכל הספריות והקבצים הקיימים, ולהקצות הרשאות לקבצים ולספריות
    הערה: קבצים מוכנים לקריאה וכתיבה
    אישור ביצוע ספריות

  5.   ג'ואנק דיג'ו

    ARCH-DESTINATION הוא משתנה בו אנו רוצים לשמור את הנתיב של קובץ היעד, לשמור ליתירות. לאחר מכן, למשתנה זה אנו מציינים את המשתנה DESTINATION, שלמעלה מכיל את הנתיב לתיקיית המסמכים ונוסיף את "המשתנה" FILE, המכיל את שם הקובץ. אם קובץ זה היה, למשל, list.doc, המשתנה ARCH-DESTINATION יהיה שווה ל- /home/Usuario/Documentos/listado.doc

  6.   בואו נשתמש בלינוקס דיג'ו

    זה המאמר הקודם. אתה יכול לגשת אליו בכתובת http://usemoslinux.blogspot.com

    לְחַבֵּק! פול.

  7.   כן דיג'ו

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

  8.   סאיטו מורדרוג דיג'ו

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

    פשוט נפלא.

  9.   פרדים דיג'ו

    Bien

  10.   הוגו דיג'ו

    שלום, אני מכין תוכנית עם CASE, מה אני רוצה שהיא תעשה ואינני יודע כיצד, למשל:

    הד בוחר אפשרות:
    הד
    הד 1. אפשרות 1
    הד 2. אפשרות 2
    הד 3. אפשרות 3
    הד 4. אפשרות 4
    הד 5. יציאה
    קרא var
    מקרה "$ var" ב
    1)
    הד "בחרת באפשרות 1"
    ;;
    2)
    הד "בחרת באפשרות 2"
    ;;
    3)
    זרק "….."
    ;;
    4)
    זרק "…."
    ;;
    5)
    זרק "…"

    ;;
    *)
    מהדהד "אפשרות שגויה"
    ;;
    esac

    בסדר מה שאני לא יודע לעשות את זה זה שכשאני בוחר באפשרות 4 שהיא יציאה, שאל אם אני באמת רוצה לצאת, ותן לי 2 אפשרויות Y & N

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

    אתה יכול לעזור לי תודה.

  11.   DAPAMA21 דיג'ו

    היי, התחלתי לסקריפט לפני חודש ותודה לפרסומי התסריט שלך. הייתי עושה בערך 1-15. תודה רבה מראש. אבל עכשיו המורה שלנו העניק לנו עבודה שהפכתי לקיפאון ממנה. מכיוון שהמורה שואל:
    מעבירים ספריה, מעתיקים לביתכם את כל הקבצים שנמצאים בספרייה ההיא באלף-בית, ושמים להם file1 file2 וכו '... וכו' ...
    עכשיו אני ברגע למצוא או לאתר, רציתי להשתמש בחיפוש, אך כאשר אני נותן לו קוד שגיאה כפי שהעברתי אותו דרך dev null, ההרשאות נדחו אז אני טועה ולשים את האיתור כאן:
    אתר $ 1 | grep "/ $ {1} \ $"
    אבל כמובן שעם זה כולם יוצאים ...
    תודה רבה אם קראת את זה.
    אם אתה יכול לעזור לי זו תהיה טובה גדולה.

  12.   לואיס דיג'ו

    הייתי רוצה שתעזור לי בזה.
    1.-הזן מספר שלם על המקלדת והצג פעמיים ושלש את המספר הזה על המסך. 2. - הכינו תוכנית שתחליט אם מספר שהוזן באמצעות המקלדת מתחלק ב -3 או לא.
    3.- הכינו תוכנית למציאת הסכום של: ???????? + ???????? + ????????? ???????? + ⋯? ???????
    4.- הכינו תוכנית למציאת הסכום 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-הכינו תוכנית שמדפיסה את המילה Linux על המסך 10 פעמים
    6.-הכינו תוכנית שמדפיסה את המילה Linux על המסך את מספר הפעמים שצוין על ידי המשתמש.
    7.-הזן סכום בשעות והמיר אותם לדקות ושניות.
    8.-חשב את שטח המשולש
    9.-הזן מספר במקלדת, ואז אם תזין 2 הוא צריך להיות בריבוע, 3 קוביות, 4 לרביעי וכן הלאה עד 6.
    10 - חשב את הפנסיה שעל סטודנט לשלם, יש להזין את קוד ההתמחות ואת הימים בפיגור:
    קוד
    תחום התמחות
    כמות
    במהלך היום
    1
    מחשוב
    160
    1
    2
    הֲנָקָה
    150
    1.5
    3
    מַזכִּירוּת
    140
    2
    4
    תיירות
    180
    2.5
    5
    חשבונאות
    160
    1
    עליך להציג את המומחיות שאתה לומד, את עלות הפנסיה, את ברירת המחדל ואת הסכום הכולל שיש לשלם.

  13.   צ'רלי דיג'ו

    שלום, מישהו יכול לעזור לי?
    אני צריך «לבקש שלוש מילים לפי המקלדת ולהציג אותן בסדר אלפביתי מ- A עד Z»
    בשפת Bash או sh עבור LINUX porfaborrrr