איך לכתוב

פקודות, תחביר ודוגמאות

אתה יכול לבצע רצף של פקודות על ידי כתיבת אותם לתוך קובץ script ולאחר מכן להפעיל אותו.

קובץ Script הוא פשוט קובץ טקסט, בדרך כלל עם סיומת הקובץ .SH, המכיל רצף של הוראות שניתן לבצע גם משורת הפקודה ( מעטפת ).

בעוד לולאה דוגמאות

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

#! / bin / bash count = 1 בעוד [$ count -le 9] מבצע הד "$ count" sleep 1 ((count ++)) done

לדוגמה, אתה יכול להפוך את הסקריפט הקודם לולאה אינסופית על ידי ביטול ההצהרה תוספת "((+ + +)):

#! / bin / bash count = 1 בעוד [$ count -le 9] לעשות הד "$ count" שינה 1 לעשות

ההצהרה "sleep 1" מפסיקה את הביצוע במשך שנייה אחת בכל איטרציה. השתמש בקיצור Ctrl + C כדי לסיים את התהליך.

אתה יכול גם ליצור לולאה אינסופית על ידי הצבת המעי הגס כתנאי:

#! / bin / bash count = 1 בזמן: לעשות הד "$ לספור" שינה 1 ((+ +)) לעשות

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

ספירה = 1 = כאשר [[$ count -le 9] & [$ done == 0]] לעשות הד "$ count" שינה 1 ((+ +)) אם [$ count == 5]; ולאחר מכן לעשות $ 1 Fi fi

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

"&&" פירושו לוגי "ו" ו "| |" פירושו לוגי "או".

רישום חלופי לצירופים "ו" או "" בתנאים הוא "-" ו "-" עם סוגריים מרובעים בודדים. המצב לעיל:

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

... יכול להיות rewritten כמו:

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

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

FILE = Invent.txt exec 6

השורה הראשונה מקצה את שם קובץ הקלט למשתנה "FILE". השורה השנייה שומרת את "קלט סטנדרטי" בתיאור הקובץ "6" (זה יכול להיות כל ערך בין 3 ל 9). זה נעשה כך "קלט סטנדרטי" ניתן לשחזר את הקובץ מתאר "0" בסוף הסקריפט (ראה את ההצהרה "exec 0 בקו 3 קובץ הקלט מוקצה לתיאור הקובץ" 0 ", המשמש עבור קלט רגיל.ההצהרה "לקרוא" ואז קורא שורה מהקובץ על כל איטרציה ומקצה אותו "line1" משתנה.

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

ספירה = 1 = כאשר [$ count -le 9] עושים הד "$ count" 1 ((+ +)) אם [$ count == 5]

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

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

ספירה = 1 = 0 כאשר [$ count -le 9] ישנים את השינה 1 ((count ++)) אם [$ count == 5] ולאחר מכן ממשיכים את ההדלקה "$ count"

במקרה זה, ההצהרה "המשך" מתבצעת כאשר המשתנה "ספירה" מגיע ל -5. משמעות הדבר היא שההצהרה הבאה (הד "$ count") אינה מבוצעת באיטרציה זו (כאשר הערך של "count" הוא 5).