כיצד להשתמש תנאי הבדיקה בתוך סקריפט

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

דוגמה בסיסית

אתה יכול לנסות פקודות אלה פשוט על ידי פתיחת חלון מסוף .

מבחן 1 -q 2 && הד "כן" || הד "לא"

ניתן לפרק את הפקודה הנ"ל כך:

בעיקרו של דבר, הפקודה משווה 1 ל 2 והם תואמים את ההצהרה "כן" ההצהרה מבוצעת אשר מציג "כן" ואם הם לא תואמים את ההדה "לא" הצהרה מתבצע אשר מציג "לא".

השוואת מספרים

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

דוגמאות:

מבחן 1 -q 2 && הד "כן" || הד "לא"

(מציג "לא" למסך כי 1 לא שווה 2)

מבחן 1 -ge 2 && הד "כן" || הד "לא"

(מציג "לא" למסך כי 1 אינו גדול או שווה ל 2)

מבחן 1 -gt 2 && הד "כן" || הד "לא"

(מציג "לא" למסך כי 1 אינו עולה על 2)

מבחן 1 -le 2 && הד "כן" || הד "לא"

(מציג "כן" למסך כי 1 הוא פחות או שווה ל 2)

מבחן 1-lt 2 && הד "כן" || הד "לא"

(מציג "כן" למסך כי 1 הוא פחות או שווה ל 2)

מבחן 1 -ne 2 && הד "כן" || הד "לא"

(מציג "כן" למסך כי 1 אינו שווה 2)

השוואת טקסט

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

דוגמאות:

test "string1" = "string2" && echo "כן" || הד "לא"

(מציג "לא" למסך כי "string1" אינו שווה "string2")

מבחן "string1"! = "string2" && echo "כן" || הד "לא"

(מציג "כן" למסך מכיוון ש- string1 אינו שווה ל- string2)

test -n "string1" && echo "כן" || הד "לא"

(מציג "כן" למסך מכיוון ש- "string1" יש אורך מחרוזת גדול מאפס)

test -z "string1" && echo "כן" || הד "לא"

(מציג "לא" למסך כי "string1" יש אורך מחרוזת גדול מאפס)

השוואת קבצים

אם אתה משווה קבצים אתה יכול להשתמש במפעילי השוואה הבאים:

דוגמאות:

מבחן / נתיב / ל / file1 -n / path / ל / file2 && הד "כן"

(אם file1 הוא חדש יותר מ file2 ואז את המילה "כן" יוצג)

test -e / path / to / file1 && echo "כן"

(אם file1 קיים המילה "כן" תוצג)

מבחן -O / path / to / file1 && echo "כן"

(אם ברשותך file1 אז המילה "כן" מוצגת ")

טרמינולוגיה

השוואת תנאים מרובים

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

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

כדי לבדוק את שני התנאים בו זמנית, השתמש בהצהרה הבאה:

מבחן 4 -q 4 -a "moo" = "moo" & הד "זה פרה" || הד "זה לא פרה"

החלק העיקרי כאן הוא -אני מייצג ו.

יש דרך טובה יותר נפוץ יותר לבצע את אותו מבחן וכי הוא כדלקמן:

מבחן 4 -Eq 4 && הבדיקה "moo" = "moo" & הד "זה פרה" || הד "זה לא פרה"

בדיקה נוספת ייתכן שתרצה לעשות הוא משווה שתי הצהרות ואם גם הוא פלט נכון מחרוזת. לדוגמה, אם ברצונך לבדוק שקובץ בשם "file1.txt" קיים או שקובץ בשם "file1.doc" קיים, באפשרותך להשתמש בפקודה הבאה

test -e file1.txt -o -e file1.doc && echo "file1 קיים" || הד "file1 אינו קיים"

החלק העיקרי כאן הוא -O אשר מייצג או.

יש דרך טובה יותר נפוץ יותר לבצע את אותו מבחן וכי הוא כדלקמן:

test -e file1.txt || test -e file1.doc && echo "file1 קיים" || הד "file1 אינו קיים"

ביטול מילת המפתח של הבדיקה

אתה לא ממש צריך להשתמש במבחן המילה כדי לבצע את ההשוואה. כל מה שאתה צריך לעשות הוא להקיף את ההצהרה בסוגריים מרובעים כדלקמן:

[-e file1.txt] && echo "file1 קיים" || הד "file1 אינו קיים"

[ו] בעצם אומר אותו מבחן.

עכשיו אתה יודע את זה אתה יכול לשפר על השוואת מספר תנאים כדלקמן:

[4 -q 4] && ["moo" = "moo"] & הד "זה פרה" || הד "זה לא פרה"

[-e file1.txt] || [-e file1.doc] && echo "file1 קיים" || הד "file1 אינו קיים"

סיכום

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