אנדרואיד

כיצד להשוות מחרוזות בבאש

Os humildes serão exaltados (Homilia Diária.1619: Sábado da 30.ª Semana do Tempo Comum)

Os humildes serão exaltados (Homilia Diária.1619: Sábado da 30.ª Semana do Tempo Comum)

תוכן עניינים:

Anonim

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

מדריך זה מתאר כיצד להשוות מחרוזות בבאש.

מפעילי השוואה

מפעילי השוואה הם מפעילים שמשווים ערכים ומחזירים אמת או שקר. כשמשווים מחרוזות בבאש תוכלו להשתמש במפעילים הבאים:

  • string1 = string2 ו- string1 == string2 - מפעיל השוויון חוזר נכון אם האופרנדים שווים.
    • השתמש במפעיל = test ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      כאשר הסקריפט מופעל הוא ידפיס את הפלט הבא.

      Strings are equal.

      להלן סקריפט נוסף שלוקח את הקלט מהמשתמש ומשווה את המחרוזות הנתונות. בדוגמה זו אנו נשתמש ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

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

      Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.

      אתה יכול גם להשתמש בלוגי ו- && ו- או || להשוות מחרוזות:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      בדוק אם מחרוזת מכילה מחרוזת

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

      גישה אחת היא להשתמש בהקפת המחרוזת בסמלי כוכבית * שמשמעותה תואמת את כל התווים.

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      התסריט מהדהד את הדברים הבאים:

      It's there.

      אפשרות נוספת היא להשתמש במפעיל regex =~ כמוצג להלן:

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      התקופה שאחריה כוכבית .* תואמת אפס או יותר מתרחשת בכל תו פרט לדמות חדשה.

      בדוק אם מחרוזת ריקה

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

      #!/bin/bash VAR='' if]; then echo "String is empty." fi

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      השוואת מיתרים עם מפעיל המקרים

      במקום להשתמש במפעילי הבדיקה תוכלו גם להשתמש בכתב התביעה כדי להשוות מחרוזות:

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

      השוואה לקסיקוגרפית

      השוואה לקסיקוגרפית היא פעולה בה משווים בין שני מחרוזות אלפביתית על ידי השוואה בין התווים במחרוזת ברצף משמאל לימין. לעתים רחוקות משתמשים בהשוואה מסוג זה.

      התסריטים הבאים משווים בין שני מיתרים בלקסיקוגרפית:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      התסריט יביא את הדברים הבאים:

      Ubuntu is lexicographically greater than Linuxize.

      סיכום

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

      מסוף bash