כיצד לשלוט בלוגיקה מותנית ב-Bash

Kyzd Lslwt Blwgyqh Mwtnyt B Bash



השימוש בלוגיקה מותנית הוא חלק מהותי מאוד בכל שפת תכנות. ניתן ליישם את ההיגיון המותנה ב-Bash בדרכים שונות כדי לפתור את בעיות התכנות. שיטות השימוש בלוגיקה מותנית ב-Bash דרך הסוגים השונים של הצהרות 'if' ו-'case' להשוואת המחרוזת והערכים המספריים, בדיקת תוכן המשתנה, בדיקת קיומו של הקובץ או הספרייה וכו' מוצגות במדריך זה .

רשימת תוכן:

  1. שימוש בהצהרת 'אם'.
  2. שימוש בהצהרת 'אם אחרת'.
  3. שימוש בהצהרת 'אם-אליף-אחרת'.
  4. שימוש בהצהרת 'אם' לבדיקת משתנה ריק
  5. שימוש בהצהרת 'אם' עם מפעיל לוגי
  6. שימוש בהצהרות ה'אם' המקוננות
  7. שימוש בהצהרת 'אם' כדי לבדוק את קיום הקובץ
  8. שימוש בהצהרת 'אם' כדי לבדוק את קיום המדריך
  9. שימוש בהצהרת 'אם' עם Regex
  10. שימוש בהצהרת 'המקרה'.

שימוש בהצהרת 'אם'.

דוגמה זו מראה את השימוש הפשוט בהצהרת 'אם' ב-Bash. ניתן להשתמש בשישה סוגים של אופרטורים להשוואה כדי להשוות את הערכים המספריים ב-Bash. אלה הם '-eq' (שווה), '-ne' (לא שווה), '-le' (פחות משווה), '-ge' (גדול משווה), '-lt' (פחות מ) ו- ' -gt' (גדול מ-). השימושים של '-lt' ו-'-eq' מוצגים בסקריפט הבא בין אם המספר קטן מ-99 או לא נבדק באמצעות האופרטור '-lt'. המספר זוגי או אי זוגי ונבדק על ידי האופרטור '-eq'.







#!/bin/bash

#הקצה ערך מספרי

( ( מספר = חמישים ) )

#בדוק את הערך המספרי באמצעות הצהרת 'אם'

אם [ $number -לט 99 ]

לאחר מכן

הֵד 'המספר תקף.'

לִהיוֹת

#בדוק אם המספר זוגי או לא

אם [ $ ( ( $number % 2 ) ) -eq 0 ]

לאחר מכן

הֵד 'המספר זוגי.'

לִהיוֹת

תְפוּקָה :



הפלט הבא מופיע לאחר ביצוע הסקריפט הקודם:



  p1





עבור למעלה

שימוש בהצהרת 'אם אחרת'.

השימוש בהצהרה 'אם-אחר' מוצג בסקריפט הבא. ערך מחרוזת נלקח מהמשתמש ובודק אם הערך הוא 'BLUE' או לא באמצעות המשפט 'if-else'.



#!/bin/bash

#קח ערך מחרוזת מהמשתמש

לקרוא -עמ' 'הזן את הצבע האהוב עליך:' צֶבַע

#בדוק את ערך המחרוזת באמצעות הצהרת 'if-else'

אם [ ${color^^} == 'כְּחוֹל' ]

לאחר מכן

הֵד 'בסדר, צבע כחול זמין.'

אַחֵר

הֵד ' צבע $ לא זמין.'

לִהיוֹת

תְפוּקָה :

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

  p2-1

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

  p2-2

עבור למעלה

שימוש בהצהרת 'אם-אליף-אחרת'.

השימוש בהצהרה 'if-elif-else' מוצג בסקריפט הבא. מספר נלקח מהמשתמש ונבדק עם הערכים השונים עד שנמצא התאמה כלשהי. אם נמצא התאמה כלשהי, ההודעה המתאימה תודפס. אם לא נמצא התאמה, הודעת ברירת המחדל תודפס.

#!/bin/bash

#קח את ערך המזהה מהמשתמש

לקרוא -עמ' 'הכנס את המספר הסידורי שלך:' סידורי

#בדוק את ערך הקלט באמצעות ההצהרה 'if-elif-else'

אם [ $ סדרתי == '4523' ]

לאחר מכן

הֵד 'אתה נבחר בקבוצה א'.'

אליף [ $ סדרתי == '8723' ]

לאחר מכן

הֵד 'אתה נבחר בקבוצה ב'.'

אליף [ $ סדרתי == '3412' ]

לאחר מכן

הֵד 'אתה נבחר בקבוצה ג'.'

אַחֵר

הֵד 'לא נבחרת' .

לִהיוֹת

תְפוּקָה:

הפלט הבא מופיע לאחר ביצוע הסקריפט עם הערך 8723:

  p3-1

הפלט הבא מופיע לאחר ביצוע הסקריפט עם הערך של 9078:

  p3-2

עבור למעלה

שימוש בהצהרת 'אם' לבדיקת משתנה ריק

השיטה לבדוק אם משתנה ריק ללא שימוש במשפט 'if' מוצגת בסקריפט הבא. האפשרות '-z' משמשת במשפט 'אם' כדי לבצע משימה זו.

#!/bin/bash

#קח את ערך המזהה מהמשתמש

לקרוא -עמ' 'הכנס את המספר הסידורי שלך:' סידורי

#בדוק אם המשתנה ריק או לא

אם [ ! -עם $ סדרתי ]

לאחר מכן

#בדוק את ערך הקלט באמצעות הצהרת 'if-elif-else'

אם [ $ סדרתי == '690' ]

לאחר מכן

הֵד 'אתה נבחר בצוות 1.'

אליף [ $ סדרתי == '450' ]

לאחר מכן

הֵד 'אתה נבחר בצוות 2.'

אַחֵר

הֵד 'לא נבחרת' .

לִהיוֹת

אַחֵר

הֵד 'לא ניתן מספר סידורי.'

לִהיוֹת

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט עם הערך של 690:

  p4-1

הפלט הבא מופיע לאחר ביצוע הסקריפט אם לא נלקח ערך קלט:

  עמ' 4-2

עבור למעלה

שימוש בהצהרת 'אם' עם מפעילים לוגיים

ניתן להשתמש בשלושה סוגים של אופרטורים לוגיים במשפט התנאי של Bash. אלו הם OR לוגיים (||), AND (&&) לוגיים ו- NOT (!). ערך קוד נלקח מהמשתמש. אם ערך הקלט אינו ריק, הערך נבדק עם שני ערכי קוד באמצעות OR לוגי. אם הערך תואם לקוד כלשהו, ​​ההודעה המתאימה תודפס. אם לא נמצא קוד תואם, הודעת ברירת המחדל תודפס.

#!/bin/bash

#קח את קוד הקורס מהמשתמש

לקרוא -עמ' 'הזן את קוד הקורס:' קוד

#בדוק אם המשתנה ריק או לא

אם [ ! -עם קוד $ ]

לאחר מכן

#בדוק את ערך הקלט באמצעות ההצהרה 'if-elif-else'

אם [ [ קוד $ == 'CSE-106' || קוד $ == 'CSE-108' ] ]

לאחר מכן

הֵד 'קורס CSE.'

אליף [ [ קוד $ == 'BBA-203' || קוד $ == 'BBA-202' ] ]

לאחר מכן

הֵד 'קורס BBA.'

אַחֵר

הֵד 'קוד קורס לא חוקי.'

לִהיוֹת

אַחֵר

הֵד 'לא ניתן קוד קורס.'

לִהיוֹת

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט עם ערך הקלט של 'CSE-108':

  p5-1

הפלט הבא מופיע לאחר ביצוע הסקריפט עם ערך הקלט של 'BBA-56':

  p5-2

עבור למעלה

שימוש בהצהרות ה'אם' המקוננות

כאשר נעשה שימוש בתנאי 'אם' בתוך תנאי 'אם' אחר, הוא נקרא הצהרת 'אם' מקוננת. שיטת השימוש ב-'if' המקונן מוצגת בסקריפט הבא. שני ערכי סימן נלקחים מהמשתמש. אם ערכי הקלט אינם ריקים, תנאי ה'אם' הראשון בודק אם הערך של '$theory' גדול או שווה ל-60 או לא. אם התנאי 'אם' הראשון מחזיר 'true', התנאי 'if' השני בודק אם הערך של ה-'$lab' גדול או שווה ל-50 או לא. אם תנאי ה'אם' השני מחזיר גם הוא 'true', מודפסת הודעת הצלחה. אחרת, מודפסת הודעת כשל.

#!/bin/bash

#קח את סימן התיאוריה

לקרוא -עמ' 'הזן את סימן התיאוריה:' תֵאוֹרִיָה

#קח את סימן המעבדה

לקרוא -עמ' 'הזן את סימן המעבדה:' מַעבָּדָה

#בדוק אם המשתנים ריקים או לא

אם [ [ ! -עם $theory && ! -עם $lab ] ]

לאחר מכן

#בדוק את ערכי הקלט באמצעות הצהרת 'אם' מקוננת

אם [ $theory -ge 60 ]

לאחר מכן

אם [ $lab -ge חמישים ]

לאחר מכן

הֵד 'עברת.'

אַחֵר

הֵד 'נכשלת.'

לִהיוֹת

אַחֵר

הֵד 'נכשלת.'

לִהיוֹת

אַחֵר

הֵד 'תיאוריה או סימן מעבדה ריק.'

לִהיוֹת

תְפוּקָה :

הפלט הבא מופיע אם שניהם או אחד מערכי הקלט ריקים:

  p6-1

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

  p6-2

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

  p6-3

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

  p6-4

עבור למעלה

שימוש בהצהרת 'אם' כדי לבדוק את קיום הקובץ

ניתן לבדוק את קיומו של הקובץ על ידי סקריפט bash בשתי דרכים. אחד מהם משתמש באופרטור '-f' עם '[]' בסוגריים. אחר הוא שימוש בפקודה 'test' ובאופרטור '-f'. נלקח שם קובץ ובודק את קיומו של הקובץ באמצעות התנאי 'if' עם האופרטור '-f'. לאחר מכן, נלקח שם קובץ נוסף ובדוק את קיומו של הקובץ באמצעות הצהרת 'if' עם הפקודה 'test' והאופרטור '-f'.

#!/bin/bash

#קח את שם הקובץ

לקרוא -עמ' 'הזן שם קובץ:' fn1

#בדוק אם הקובץ קיים או לא מבלי להשתמש ב-'test'

אם [ $fn1 ]

לאחר מכן

הֵד ' $fn1 הקובץ קיים.'

אַחֵר

הֵד ' $fn1 הקובץ אינו קיים.'

לִהיוֹת

#הוסף שורה חדשה

הֵד

#קח שם קובץ אחר

לקרוא -עמ' 'הזן שם קובץ אחר:' fn2

#בדוק אם הקובץ קיים או לא באמצעות `test`

אם מִבְחָן $fn2 ; לאחר מכן

הֵד ' $fn2 הקובץ קיים.'

#בדוק אם הקובץ ריק או לא באמצעות `test`

אם מִבְחָן -עם $fn2 ; לאחר מכן

הֵד ' $fn2 הקובץ ריק.'

אַחֵר

הֵד ' $fn2 הקובץ אינו ריק.'

לִהיוֹת

אַחֵר

הֵד ' $fn2 הקובץ אינו קיים.'

לִהיוֹת

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט על ידי נטילת ה-'test.txt' ו-'testing.txt' בתור שמות הקבצים. לפי הפלט, שני הקבצים קיימים במיקום הנוכחי וקובץ 'testing.txt' ריק:

  p7-1

הפלט הבא מופיע לאחר ביצוע הסקריפט על ידי נטילת ה-'f1.txt' ו-'test.txt' בתור שמות הקבצים. לפי הפלט, קובץ 'f1.txt' אינו קיים במיקום הנוכחי וקובץ 'test.txt' אינו ריק:

  עמ' 7-2

עבור למעלה

שימוש בהצהרת 'אם' כדי לבדוק את קיום המדריך

ניתן לבדוק את קיומה של הספרייה על ידי סקריפט Bash בשתי דרכים כמו הקובץ. אחד מהם משתמש באופרטור '-d' עם '[]' בסוגריים. אחר הוא שימוש בפקודה 'test' ובאופרטור '-d'. נלקח שם ספרייה ובודק את קיומה של הספרייה באמצעות התנאי 'if' עם האופרטור '-d'. לאחר מכן, נלקח שם ספרייה נוסף ובודק את קיומו של הקובץ באמצעות הצהרת 'if' עם הפקודה 'test' והאופרטור '-d'.

#!/bin/bash

#קח שם ספרייה

לקרוא -עמ' 'הזן שם ספרייה:' אתה 1

#בדוק אם הספרייה קיימת או לא ללא שימוש ב- `test`

אם [ $dir1 ]

לאחר מכן

הֵד ' $dir1 ספרייה קיימת.'

אַחֵר

הֵד ' $dir1 ספרייה לא קיימת.'

לִהיוֹת

#הוסף שורה חדשה

הֵד

#קח שם ספרייה אחר

לקרוא -עמ' 'הזן שם ספרייה אחר:' dir2

#בדוק אם הקובץ קיים או לא באמצעות `test`

אם מִבְחָן $dir2

לאחר מכן

הֵד ' $dir2 ספרייה קיימת.'

אַחֵר

הֵד ' $dir2 ספרייה לא קיימת.'

לִהיוֹת

תְפוּקָה :

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

  p8-1

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

  p8-2

עבור למעלה

שימוש בהצהרת 'אם' עם Regex

הסקריפט הבא מציג את השיטה לאימות נתוני הקלט באמצעות משפט 'if' עם הביטוי הרגולרי. כאן, שני ערכי קלט נלקחים מהמשתמש ומאוחסנים במשתנים '$bookname' ו-'$bookprice'. התנאי 'if' משמש בסקריפט כדי לבדוק שהמשתנה '$bookname' מכיל את כל התווים האלפביתיים וה-'$bookprice' מכיל מספר.

#!/bin/bash

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

הֵד 'הזן את שם הספר:'

לקרוא שם הספר

הֵד 'הזן את מחיר הספר:'

לקרוא מחיר הספר

#בדוק ששם הספר מכיל את האלפבית בלבד

אם ! [ [ ' $bookname ' =~ [ א-זה-ז ] ] ] ; לאחר מכן

הֵד 'שם הספר אינו חוקי.'

אַחֵר

הֵד 'שם הספר תקף.'

לִהיוֹת

#בדוק שמחיר הספר מכיל ספרות בלבד

אם ! [ [ ' $מחיר ספר ' =~ [ 0 - 9 ] ] ] ; לאחר מכן

הֵד 'מחיר הספר יכול להכיל ספרות בלבד.'

אַחֵר

הֵד 'מחיר הספר תקף.'

לִהיוֹת

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט עם ערכי הקלט של 'Bash Programming' כשם הספר ו-78 כמחיר הספר:

  p9-1

הפלט הבא מופיע לאחר ביצוע הסקריפט עם ערכי הקלט של 90 כשם הספר ו-'Bash' כמחיר הספר:

  עמ' 9-2

עבור למעלה

שימוש בהצהרת 'המקרה'.

הצהרת ה'מקרה' היא החלופה של הצהרת ה'אם-elif-else', אך לא ניתן לבצע את כל המשימות של הצהרת 'if-elif-else' באמצעות הצהרת 'המקרה'. השימוש הפשוט בהצהרת 'מקרה' מוצג בסקריפט הבא. ערך מספרי נלקח מהמשתמש כערך החודש הנוכחי. לאחר מכן, החודש המתאים מודפס אם נמצא ערך תואם כלשהו בהצהרת 'המקרה'. אחרת, הודעת ברירת המחדל תודפס.

#!/bin/bash

#קח את ערך החודש הנוכחי במספר

לקרוא -עמ' 'הזן את החודש של היום במספר:' b_month

#הדפס את הטקסט לפני הדפסת שם החודש

הֵד 'שם החודש הנוכחי הוא'

#גלה והדפיס את שם החודש התואם בהתבסס על הקלט

מקרה $b_month ב

1 | 01 ) הֵד 'יָנוּאָר.' ;;

2 | 02 ) הֵד 'פברואר.' ;;

3 | 03 ) הֵד 'מרץ.' ;;

4 | 04 ) הֵד 'אַפּרִיל.' ;;

5 | 05 ) הֵד 'מאי.' ;;

6 | 06 ) הֵד 'יוני.' ;;

7 | 07 ) הֵד 'יולי.' ;;

8 | 08 ) הֵד 'אוגוסט.' ;;

9 | 09 ) הֵד 'סֶפּטֶמבֶּר.' ;;

10 ) הֵד 'אוֹקְטוֹבֶּר.' ;;

אחד עשר ) הֵד 'נוֹבֶמבֶּר.' ;;

12 ) הֵד 'דֵצֶמבֶּר.' ;;

* ) הֵד 'לא נמצא.' ;;

esac

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט עם הערך של 6:

  p10-1

הפלט הבא מופיע לאחר ביצוע הסקריפט עם הערך 09:


  עמ' 10-2

הפלט הבא מופיע לאחר ביצוע הסקריפט עם הערך של 14:

  עמ' 10-3

עבור למעלה

סיכום

שימושים שונים בלוגיקה מותנית תוך שימוש בהצהרות 'אם' ו'מקרה' מוצגים ב-10 הדוגמאות של מדריך זה. הרעיון של שימוש בלוגיקה המותנית ב-Bash יתנקה עבור משתמשי Bash החדשים לאחר קריאת המדריך הזה.