Introduction to Bash Scripting 06 - A Simple "If" Statement
תוכן עניינים:
קבלת החלטות היא אחד המושגים הבסיסיים ביותר בתכנות מחשבים. כמו בכל שפת תכנות אחרת,
if
,
if
if..else
,
if
if..else
if..elif..else
if
ניתן להשתמש בהצהרות בבאש לביצוע קוד בהתבסס על תנאי מסוים.
במדריך זה, נעביר אותך דרך היסודות של ה- Bash
if
הצהרות ונראה לך כיצד להשתמש בהם בתסריטים של הקונכיות שלך.
if
הצהרה
Bash
if
מזגנים יכולים להיות בעלי צורות שונות. ההצהרה הבסיסית ביותר
if
את הטופס הבא:
if TEST-COMMAND then STATEMENTS fi
אמירת
if
מתחילה במילת המפתח
if
ואחריה הביטוי המותנה והמילת מפתח
then
. ההצהרה מסתיימת במילת המפתח
fi
.
אם ה-
TEST-COMMAND
מעריך את ה-
True
,
STATEMENTS
מוצגות להורג. אם
TEST-COMMAND
מחזיר
False
, שום דבר לא קורה,
STATEMENTS
מתעלמות.
באופן כללי, כדאי תמיד להטביע את הקוד שלך ולהפריד בין חסימות קוד עם שורות ריקות. רוב האנשים בוחרים להשתמש בכניסה לחלל או לשני חדרים. כניסות ושורות ריקות הופכים את הקוד לקריא ומאורגן יותר.
בואו נסתכל על סקריפט הדוגמה הבא הבודק אם מספר נתון גדול מ- 10.
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi
שמור את הקוד בקובץ והפעל אותו משורת הפקודה:
bash test.sh
התסריט יבקש ממך להזין מספר. אם לדוגמה, אתה מזין 15, פקודת
test
תעריך
true
כיוון ש -15 גדול מ -10,
echo
בתוך הסעיף
then
תבוצע.
The variable is greater than 10.
if..else
הצהרה
if..else
Bash
if..else
לובשת את הטופס הבא:
if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi
אם ה-
TEST-COMMAND
מעריך ל-
True
, ה-
STATEMENTS1
יבוצע. אחרת, אם
TEST-COMMAND
יחזיר
False
, ה-
STATEMENTS2
יבוצע. אתה יכול לקבל סעיף אחד
else
רק בהצהרה.
בואו להוסיף סעיף
else
לתסריט לדוגמה הקודם:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi
if..elif..else
הצהרה
if..elif..else
Bash
if..elif..else
לובשת את הטופס הבא:
if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi
אם ה-
TEST-COMMAND1
מעריך ל-
True
, ה-
STATEMENTS1
יבוצע. אם ה-
TEST-COMMAND2
מעריך ל-
True
, ה-
STATEMENTS2
יבוצע. אם אף אחת מפקודות הבדיקה אינה מעריכה ל-
True
, ה-
STATEMENTS2
מבוצע.
באפשרותך לכלול סעיפי
elif
אחד או יותר בהצהרה. הסעיף
else
הוא לא חובה.
התנאים נבדקים ברצף. ברגע שחוזר תנאי
True
התנאים הנותרים לא מבוצעים ובקרת התוכנית עוברת לסוף הצהרות ה-
if
.
בואו להוסיף סעיף
elif
לתסריט הקודם:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi
מקוננים
if
הצהרות
Bash מאפשר לך לקנן
if
אמירות בתוך הצהרות
if
. אתה יכול למקם מספר
if
משפט בתוך משפט אחר
if
משפט.
התסריט הבא יבקש ממך להזין שלושה מספרים ולהדפיס את המספר הגדול ביותר מבין שלושת המספרים.
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi
כך ייראה הפלט:
Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number.
במקום להשתמש בהצהרות מקוננות
if
בדרך כלל, יעיל יותר להשתמש בהצהרת המקרה.
תנאים מרובים
מפעילי ה-
OR
ו-
AND
ההגיוניים מאפשרים לך להשתמש בתנאים מרובים בהצהרות
if
.
להלן גרסה נוספת של התסריט להדפסת המספר הגדול ביותר מבין שלושת המספרים. בגירסה זו, במקום ההצהרות המקוננות
if
אנו נשתמש במפעיל ה-
AND
(
&&
) ההגיוני.
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi
מפעילי מבחן
ב- Bash, פקודת
test
לומדת אחת מצורות התחביר שלהלן:
test EXPRESSION]
כדי לשלול את ביטוי הבדיקה השתמש במפעיל
NOT
(
!
) ההגיוני. כשמשווים מחרוזות השתמש תמיד בציטוטים בודדים או כפולים כדי להימנע מכל בעיה של פיצול מילים או גלבורים.
להלן כמה מהמפעילים הנפוצים ביותר:
-
-n
VAR
- נכון אם אורך ה- VAR גדול מאפס.-z
VAR
- נכון אם ה- VAR ריק.STRING1 = STRING2
- נכון [STRING1 ו- STRING2 שווים.STRING1 != STRING2
- STRING1 ו- STRING2 אמיתיים אינם שווים.INTEGER1 -eq INTEGER2
- נכון INTEGER1 ו- INTEGER2 שווים.INTEGER1 -gt INTEGER2
-INTEGER1 -gt INTEGER2
נכון הוא גדול מ- INTEGER2.INTEGER1 -lt INTEGER2
-INTEGER1 -lt INTEGER2
אמיתי הוא פחות מ- INTEGER2.INTEGER1 -ge INTEGER2
-INTEGER1 -ge INTEGER2
נכון הוא שווה או יותר מ- INTEGER2.INTEGER1 -le INTEGER2
-INTEGER1 -le INTEGER2
אמיתי הוא שווה או פחות מ- INTEGER2.-h
FILE
- נכון אם הקובץ קיים והוא קישור סמלי.-r
FILE
- נכון אם הקובץ קיים וקריא.-w
FILE
- נכון אם הקובץ קיים וניתן לכתיבה.-x
FILE
- נכון אם הקובץ קיים וניתן להפעלה.-d
FILE
- נכון אם הקובץ קיים והוא ספרייה.-e
FILE
- נכון אם הקובץ קיים והוא קובץ, ללא קשר לסוג (צומת, מדריך, שקע וכו ').-f
FILE
- נכון אם הקובץ קיים והוא קובץ רגיל (לא ספריה או התקן).
סיכום
if..else
if
,
if..else
ו-
if..elif..else
מאפשרות לך לשלוט על זרימת הביצוע של סקריפט בש על ידי הערכת תנאים נתונים.
מיקרוסופט מחקר אסיה המארחים שערים ב 10 שנה Bash

מיקרוסופט מחקר אסיה גדלה מתריסר אנשים בשנת 1998 ליותר מ 350 שנה מאוחר יותר.
כיצד לבדוק אם קיים קובץ או ספרייה ב- bash

פעמים רבות בעת כתיבת סקריפטים של Shell, אתה עלול למצוא את עצמך במצב שאתה צריך לבצע פעולה על סמך האם קיים קובץ או לא. באש אתה יכול להשתמש בפקודת הבדיקה כדי לבדוק אם קיים קובץ ולקבוע את סוג הקובץ.
Bash heredoc

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