ווי צו שרייַבן באַש WHOP-Loops

קאַמאַנדז, סינטאַקס, און ביישפילן

איר קענען דורכפירן אַ סיקוואַנס פון קאַמאַנדז דורך שרייַבן זיי אין אַ שריפט טעקע און דעמאָלט פליסנדיק עס.

א שריפט טעקע איז פשוט אַ טעקסט טעקע, יוזשאַוואַלי מיט די. סיי טעקע פאַרלענגערונג, וואָס כּולל אַ סיקוואַנס פון ינסטראַקשאַנז וואָס קען אויך זיין עקסאַקיוטאַד דורך די באַפֿעל שורה ( שאָל ).

בשעת לופּ עקסאַם

ונטער איז אַ בייַשפּיל פון אַ בשעת שלייף. ווען עקסאַקיוטאַד, דעם שריפט טעקע וועט דרוקן די נומערן 1 דורך 9 אויף דעם עקראַן. דער בשעת-דערקלערונג גיט איר מער בייגיקייַט פֿאַר ספּעסאַפייינג די טערמאַניישאַן צושטאַנד ווי די פאָר -שלייף .

#! / bin / bash count = 1 while [$ count -le 9] do echo "$ count" שלאָף 1 ((count ++)) done

למשל, איר קענען מאַכן די פרייַערדיק שריפט אַ ינפאַנאַט שלייף דורך אָומיטינג די ינקראַמאַנט דערקלערונג "((קייט + +))":

#! / בין / באַש כעזשבן = 1 בשעת [$ count -לע 9] טאָן עקאָו "$ ציילן" שלאָף 1 געטאן

דער "שלאָפן 1" דערקלערונג פּאָזאַז דער דורכפירונג פֿאַר 1 רגע אויף יעדער יטעראַטיאָן. ניצן די Ctrl + C קלאַוויאַטור דורכוועג צו פאַרענדיקן דעם פּראָצעס.

איר קענען אויך מאַכן אַ ינפאַנאַט שלייף דורך פּאַטינג אַ צווייפּינטל ווי די צושטאַנד:

#! / בין / באַש רעכענען = 1 בשעת: טאָן עקאָו "$ רעכענען" שלאָף 1 ((קויל ++)) געטאן

אין סדר צו נוצן קייפל באדינגונגען אין די בשעת-שלייף, איר האָבן צו נוצן די טאָפּל קוואַדראַט קלאַמער נאָטאַטיאָן:

count = 1 done = 0 while [[$ count -le 9] && [$ done == 0]] do echo "$ count" שלאָף 1 ((count ++)) אויב [$ count == 5]; דעמאָלט $ געטאן = 1 פי געטאן

אין דעם שריפט, די בייַטעוודיק "געטאן" איז ינישאַלייזד צו 0 און דעמאָלט שטעלן צו 1 ווען די ציילן ריטשאַז 5. די שלייף צושטאַנד שטאַטן אַז די בשעת שלייף וועט פאָרזעצן ווי לאַנג ווי "ציילן" איז ווייניקער ווי נייַן און "געטאן" איז גלייַך צו נול. דעריבער די שלייף אַרויסגאַנג ווען די ציילן גלייַך 5.

די "&&" מיטל לאַדזשיקאַל "און" און "||" מיטל לאַדזשיקאַל "אָדער".

אַ אנדער ברירה נאָוטיישאַן פֿאַר די קאָנדזשונקשאַנז "און" און "אָדער" אין טנאָים איז "-אַ" און "-אָ" מיט איין קוואַדראַט בראַקאַץ. די אויבן צושטאַנד:

[[$ count -le 9] && [$ done == 0]]

... קען זיין איבערגעקוקט ווי:

[$ count -le 9] -a [$ done == 0]

לייענען אַ טעקסט טעקע איז טיפּיקלי געטאן מיט אַ בשעת שלייף. אין די פאלגענדע בייַשפּיל, די באַש שריפט לייענט די אינהאַלט שורה דורך שורה פון אַ טעקע גערופן "ינווענטאָרי.טקסט:"

טעקע = ינווענטאָרי.טקסט עקסאַקי 6

דער ערשטער שורה אַסיינז דער אַרייַנשרייַב טעקע נאָמען צו די "טעקע" בייַטעוודיק. די רגע שורה סאַוועס די "נאָרמאַל אַרייַנשרייַב" אין דער טעקע דעסקריפּטאָר "6" (עס קען זיין קיין ווערט צווישן 3 און 9). דאָס איז געטאן אַזוי אַז "נאָרמאַל אַרייַנשרייַב" קענען זיין צוריקקריגן צו טעקע דעסקריפּטאָר "0" אין די סוף פון די שריפט (זען די דערקלערונג "עקסעקוט 0 אין די 3 ד שורה די אַרייַנשרייַב טעקע איז אַסיינד צו טעקע דעסקריפּטאָר" 0, "וואָס איז געניצט פֿאַר נאָרמאַל אַרייַנשרייַב די "לייענען" סטאַטעמענט דעמאָלט לייענט אַ שורה פון דער טעקע אויף יעדער יטעראַטיאָן און אַסיינז עס צו די "שורה 1" בייַטעוודיק.

אין סדר צו פאַרענדיקן אַ בשעת-שלייף, איר קענען נוצן די ברעכן ויסזאָגונג ווי דאָס:

== 5], און ברויכן די פונט פון די פאַרפוילן עקסטשיינדזשיז

די ברעכן ויסזאָגונג סקיפּס פּראָגראַם דורכפירונג צו דער סוף בשעת שלייף און עקסאַקיוץ קיין סטייטמאַנץ ווייַטערדיק עס. אין דעם פאַל, די דערקלערונג "עקאָו פאַרטיק."

די פאָרזעצן דערקלערונג, אויף די אנדערע האַנט, יבערקוקן בלויז די רעשט פון די בשעת שלייף דערקלערונג פון די קראַנט יטעראַטיאָן און שפּרינגען גלייַך צו דער ווייַטער יטעראַטיאָן:

אויב איר טאָן ניט האָבן צו באַצאָלן $ 1 אָדער $ (1)

אין דעם פאַל, די "פאָרזעצן" דערקלערונג איז עקסאַקיוטאַד ווען די בייַטעוודיק "ציילן" ריטשאַז 5. דאס מיטל דער סאַבסאַקוואַנט סטאַטעמענט (אפקלאנג "$ רעכענען") איז נישט עקסאַקיוטיד אויף דעם יטעראַטיאָן (ווען די ווערט פון "ציילן" איז 5).