די פּרובירן באַפֿעל קענען זיין געוויינט אויף די לינוקס באַפֿעלן שורה צו פאַרגלייַכן איין עלעמענט קעגן אנדערן אָבער עס איז מער קאַמאַנלי געניצט אין באַשי שאָל סקריפּס ווי טייל פון קאַנדישאַנאַל סטייטמאַנץ וואָס קאָנטראָל לאָגיק און פּראָגראַם לויפן.
א באַסיק בייַשפּיל
איר קענען פּרובירן די קאַמאַנדז פשוט דורך עפענען אַ וואָקזאַל פֿענצטער .
פּרובירן 1 -עק 2 & & echo "יאָ" || עקאָו "קיין"
די אויבן באַפֿעל קענען זיין צעבראכן ווי גייט:
- פּרובירן - דעם מיטל איר זענען וועגן צו דורכפירן אַ פאַרגלייַך
- 1 - דער ערשטער עלעמענט איר וועט פאַרגלייַכן
- -עק (וויאַזוי איר פאַרגלייַכן, אין דעם פאַל, איר זענט טעסטינג צי איין נומער יקוואַלז אנדערן)
- 2 - די עלעמענט איר פאַרגלייַכן דער ערשטער עלעמענט ווידער
- && - לויפן די פאלגענדע סטאַטעמענט אויב די רעזולטאַט איז אמת
- אפקלאנג "יאָ" - די באַפֿעל צו לויפן אויב דער פאַרגלייַך קערט אמת
- || - לויף די פאלגענדע סטאַטעמענט אויב די רעזולטאַט איז פאַלש
- עקאָו "קיין" - די באַפֿעל צו לויפן אויב די פאַרגלייַך קערט פאַלש
אין עסאַנס, די באַפֿעל איז קאַמפּערינג פון 1 צו 2 און זיי גלייַכן די עקאָו "יאָ" דערקלערונג איז עקסאַקיוטאַד וואָס דיספּלייז "יאָ" און אויב זיי טאָן ניט גלייַכן דעם עקאָו "קיין" סטאַטעמענט איז עקסאַקיוטאַד וואָס דיספּלייז "קיין".
קאַמפּערינג נומבערס
אויב איר זענען קאַמפּערינג עלעמענטן אַז פּאַרס ווי נומערן איר קענען נוצן די פאלגענדע קאַמפּערד אָפּערייטערז:
- -עק - טוט ווערט 1 גלייַך ווערט 2
- -גע - איז ווערט 1 גרעסערע אָדער גלייַך צו ווערט 2
- -טה - איז ווערט 1 גרעסער ווי ווערט 2
- -לע - איז ווערט 1 ווייניקער ווי אָדער גלייַך צו ווערט 2
- -lt - איז ווערט 1 ווייניקער ווי ווערט 2
- -ן - טוט ווערט 1 ניט גלייַך ווערט 2
ביישפילן:
פּרובירן 1 -עק 2 & & echo "יאָ" || עקאָו "קיין"
(דיספּלייז "קיין" צו די פאַרשטעלן ווייַל 1 טוט ניט גלייַך 2)
פּרובירן 1 -גע 2 & & ווידערקאָל "יאָ" || עקאָו "קיין"
(דיספּלייז "קיין" צו די פאַרשטעלן ווייַל 1 איז נישט גרעסער אָדער גלייַך צו 2)
פּרובירן 1-גיגאבייט 2 & & ווידערקאָל "יאָ" || עקאָו "קיין"
(דיספּלייז "קיין" צו די פאַרשטעלן ווייַל 1 איז נישט גרעסער ווי 2)
פּרובירן 1 -לע 2 & & ווידערקאָל "יאָ" || עקאָו "קיין"
(דיספּלייז "יאָ" צו די פאַרשטעלן ווייַל 1 איז ווייניקער ווי אָדער גלייַך צו 2)
פּרובירן 1-ף 2 & & ווידערקאָל "יאָ" || עקאָו "קיין"
(דיספּלייז "יאָ" צו די פאַרשטעלן ווייַל 1 איז ווייניקער ווי אָדער גלייַך צו 2)
פּרובירן 1-ען 2 & & ווידערקאָל "יאָ" || עקאָו "קיין"
(דיספּלייז "יאָ" צו די פאַרשטעלן ווייַל 1 טוט ניט גלייַך 2)
Comparing Text
אויב איר זענען קאַמפּערינג עלעמענטן וואָס פּאַרס ווי סטרינגס איר קענען נוצן די פאלגענדע קאַמפּערד אָפּערייטערז:
- = - טוט שטריקל 1 גלייַכן שטריקל 2
- ! = - איז שטרענג 1 אַנדערש צו שטריקל 2
- -ן - איז די שטריקל לענג גרעסער ווי 0
- -ז - איז די שטריקל לענג 0
ביישפילן:
test "string1" = "string2" && echo "יאָ" || עקאָו "קיין"
(דיספּלייז "קיין" צו די פאַרשטעלן ווייַל "סטרינג 1" טוט נישט גלייַך "סטרינג 2")
test "string1"! = "string2" && echo "yes" || עקאָו "קיין"
(דיספּלייז "יאָ" צו די פאַרשטעלן ווייַל "סטרינג 1" טוט נישט גלייַך "סטרינג 2")
test -n "string1" && echo "יאָ" || עקאָו "קיין"
(דיספּלייז "יאָ" צו די פאַרשטעלן ווייַל "סטרינג 1" האט אַ שטריקל לענג גרעסער ווי נול)
test -z "string1" && echo "יאָ" || עקאָו "קיין"
(דיספּלייז "קיין" צו די פאַרשטעלן ווייַל "סטרינג 1" האט אַ שטריקל לענג גרעסער ווי נול)
קאַמפּערינג פילעס
אויב איר זענען קאַמפּערינג טעקעס איר קענען נוצן די פאלגענדע קאַמפּערד אָפּערייטערז:
- -ef - צי די טעקעס האָבן די זעלבע מיטל און ינאָדע נומערן (זענען זיי די זעלבע טעקע)
- -ן - איז דער ערשטער טעקע נייַער ווי די רגע טעקע
- -אָט - איז דער ערשטער טעקע עלטער ווי די רגע טעקע
- -b - דער טעקע יגזיסץ און איז בלאָק ספּעציעל
- -c - דער טעקע יגזיסץ און איז כאַראַקטער ספּעציעל
- -ד - די טעקע יגזיסץ און איז אַ וועגווייַזער
- -e - דער טעקע יגזיסץ
- -f - דער טעקע יגזיסץ און איז אַ רעגולער טעקע
- -ג - דער טעקע יגזיסץ און האט די ספּעסאַפייד גרופּע נומער
- -G - דער טעקע יגזיסץ און באַזיצער דורך די באַניצער 'ס גרופּע
- -ה - דער טעקע יגזיסץ און איז אַ סימבאָליש לינק
- -k - דער טעקע יגזיסץ און האט זייַן קלעפּיק ביסל שטעלן
- -L - די זעלבע ווי -ה
- -O - דער טעקע יגזיסץ איר זענען די באַזיצער
- -פּ - די טעקע יגזיסץ און איז אַ געהייסן רער
- -ר - דער טעקע יגזיסץ און איז ליינעוודיק
- -ס - דער טעקע יגזיסץ און האט אַ גרייס גרעסער ווי נול
- -S - דער טעקע יגזיסץ און איז אַ כאָלעל
- -t - דער טעקע דעסקריפּטאָר איז געעפנט אויף אַ וואָקזאַל
- -ו - דער טעקע יגזיסץ און די שטעלן-באַניצער-שייַן ביסל איז שטעלן
- -וו - דער טעקע יגזיסץ און איז שרייַבן
- -קס - דער טעקע יגזיסץ און איז עקסעקוטאַבלע
ביישפילן:
test / path / to / file1 -n / path / to / file2 & echo "yes"
(אויב טעקע 1 איז נייַער ווי פילע 2 דעמאָלט דער וואָרט "יאָ" וועט זיין געוויזן)
test -e / path / to / file1 && echo "yes"
(אויב טעקע1 יגזיסץ די וואָרט "יאָ" וועט זיין געוויזן)
test -O / path / to / file1 && echo "yes"
(אויב איר אייגן טעקע 1 דעמאָלט דער וואָרט "יאָ" איז געוויזן ")
טערמינאָלאָגיע
- פאַרשפּאַרן ספּעציעל - דער טעקע איז אַ פאַרשפּאַרן מיטל וואָס מיטל אַז די דאַטע איז לייענען אין בלאַקס פון ביטעס. דאס זענען בכלל מיטל טעקעס אַזאַ ווי שווער דרייווז.
- כאַראַקטער ספּעציעל - דער טעקע איז אַקטאַד אויף מיד ווען איר שרייַבן צו עס און איז קאַמאַנלי אַ מיטל אַזאַ ווי אַ סיריאַל פּאָרט
קאַמפּערינג מער ווי איין קאָנדיטיאָנס
אַזוי ווייַט אַלץ איז געווען קאַמפּערינג איין זאַך קעגן אנדערן אָבער וואָס אויב איר ווילן צו פאַרגלייַכן צוויי באדינגונגען.
פֿאַר בייַשפּיל, אויב אַ כייַע האט 4 לעגס און גייט "מאָאָ" עס איז מיסטאָמע אַ קו. פשוט טשעק פֿאַר 4 פיס טוט נישט גאַראַנטירן אַז איר האָבן אַ קו, אָבער קאָנטראָלירן דעם געזונט עס מאכט זיכער.
צו פּרובירן ביידע באדינגונגען בייַ אַמאָל נוצן די פאלגענדע סטאַטעמענט:
test 4 -eq 4 -a "moo" = "moo" && echo "עס איז אַ קו" || עקאָו "עס איז נישט אַ קו"
דער שליסל טייל דאָ איז דער-אַ וואָס שטייט פֿאַר און.
עס איז אַ בעסער און מער קאַמאַנלי געניצט וועג צו דורכפירן די זעלבע פּראָבע און דאָס איז ווי גייט:
test 4 -eq 4 && test "moo" = "moo" && echo "עס איז אַ קו" || עקאָו "עס איז נישט אַ קו"
אן אנדער פּרובירן איר זאל וועלן צו מאַכן איז קאַמפּערינג צוויי סטייטמאַנץ און אויב איינער איז אמת רעזולטאַט אַ שטריקל. למשל, אויב איר ווילן צו קאָנטראָלירן אַז אַ טעקע געהייסן "טעקע1.טקסט" יגזיסץ אָדער אַ טעקע גערופן "טעקע1.דאָק" יגזיסץ איר קענען נוצן דעם ווייַטערדיק באַפֿעל
test -e file1.txt -o -e file1.doc && echo "file1 exists" || עקאָו "טעקע 1 טוט נישט עקסיסטירן"
דער שליסל טייל דאָ איז די -אָ וואָס שטייט פֿאַר אָדער.
עס איז אַ בעסער און מער קאַמאַנלי געניצט וועג צו דורכפירן די זעלבע פּראָבע און דאָס איז ווי גייט:
test -e file1.txt || test -e file1.doc && echo "file1 exists" || עקאָו "טעקע 1 טוט נישט עקסיסטירן"
עלימינירן די טעסט קייוואָרד
איר טאָן ניט טאַקע דאַרפֿן צו נוצן די וואָרט פּרובירן צו דורכפירן די פאַרגלייַך. אַלע וואָס איר האָט צו טאָן איז ענקלאָוז די דערקלערונג אין קוואַדראַט בראַקאַץ ווי גייט:
[-e file1.txt] && echo "file1 exists" || עקאָו "טעקע 1 טוט נישט עקסיסטירן"
די [און] בייסיקלי מיטל די זעלבע ווי די פּרובירן.
איצט איר וויסן דאָס איר קענען פֿאַרבעסערן אויף קאַמפּערינג קייפל טנאָים ווי גייט:
[4-אַד 4] && ["moo" = "moo"] && echo "עס איז אַ קו" || עקאָו "עס איז נישט אַ קו"
[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || עקאָו "טעקע 1 טוט נישט עקסיסטירן"
Summary
די פּרובירן באַפֿעלן איז מער נוצלעך אין סקריפּס ווייַל איר קענען פּרובירן די ווערט פון איינער בייַטעוודיק קעגן אנדערן און קאָנטראָל פּראָגראַם לויפן. אויף דעם נאָרמאַל באַפֿעלן שורה, איר קענען נוצן עס צו פּרובירן צי אַ טעקע יזיז אָדער