עבור: טופס מעטפת מסורתי
המקורי ל תחביר הפקודה הוא:
ל משתנה [ב מילים]; לַעֲשׂוֹת
פקודות
עשה
איפה משתנה הוא שם של משתנה שיגדל במהלך ביצוע הלולאה, מילים היא רשימה אופציונלית של פריטים שיוקצו אליהם ברצף משתנה, ו פקודות הן הפקודות שיש לבצע בכל איטרציה של הלולאה.
אל האני ל הפקודה שימושית בשורת הפקודה. אנחנו יכולים להדגים בקלות איך זה עובד:
[me@linuxbox ~]$ עבור i ב-ABCD; לעשות הד $i; בוצע
א ב ג ד
[me@linuxbox ~]$ עבור i ב-ABCD; לעשות הד $i; בוצע
א ב ג ד
בדוגמה זו, ל ניתנת רשימה של ארבע מילים: "A", "B", "C" ו-"D". עם רשימה של ארבע מילים, הלולאה מבוצעת ארבע פעמים. בכל פעם שהלולאה מבוצעת, מוקצית מילה למשתנה i. בתוך הלולאה, יש לנו הד פקודה שמציגה את הערך של i כדי להציג את המשימה. כמו עם ה בזמן ו עד לולאות, ה עשה מילת מפתח סוגרת את הלולאה.
התכונה החזקה באמת של ל הוא מספר הדרכים המעניינות שבהן אנו יכולים ליצור את רשימת המילים. לדוגמה, באמצעות הרחבת הפלטה:
[me@linuxbox ~]$ כי ב {א..ד}; לעשות הד $i; בוצע
א ב ג ד
[me@linuxbox ~]$ כי ב {א..ד}; לעשות הד $i; בוצע
א ב ג ד
או הרחבת שם נתיב:
[me@linuxbox ~]$ for i in distros*.txt; לעשות הד $i; בוצע
distros-by-date.txt distros-dates.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt
distros-vernums.txt distros-versions.txt
[me@linuxbox ~]$ for i in distros*.txt; לעשות הד $i; בוצע
distros-by-date.txt distros-dates.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt
distros-vernums.txt distros-versions.txt
או החלפת פקודה:
#! / bin / bash
# longest-word: מצא את המחרוזת הארוכה ביותר בקובץ בזמן [[ -n $1 ]]; לַעֲשׂוֹת
if [[ -r $1 ]]; ואז max_word= max_len=0
עבור i ב-$(מחרוזות $1); do len=$(echo -n $i | wc -c)
if (( len > max_len )); ואז max_len=$len max_word=$i
fi
עשה
echo "$1: '$max_word' ($max_len תווים)"
משמרת fi
עשה
#! / bin / bash
# longest-word: מצא את המחרוזת הארוכה ביותר בקובץ בזמן [[ -n $1 ]]; לַעֲשׂוֹת
if [[ -r $1 ]]; ואז max_word= max_len=0
עבור i ב-$(מחרוזות $1); do len=$(echo -n $i | wc -c)
if (( len > max_len )); ואז max_len=$len max_word=$i
fi
עשה
echo "$1: '$max_word' ($max_len תווים)"
משמרת fi
עשה
עבור: טופס מעטפת מסורתי
בדוגמה זו, אנו מחפשים את המחרוזת הארוכה ביותר שנמצאה בתוך קובץ. כאשר ניתן שם קובץ אחד או יותר בשורת הפקודה, תוכנית זו משתמשת ב- מחרוזות תוכנית (הכלולה בחבילת GNU binutils) ליצירת רשימה של "מילים" טקסט קריא בכל קובץ. ה ל לולאה מעבדת כל מילה בתורה וקובעת אם המילה הנוכחית היא הארוכה ביותר שנמצאה עד כה. כאשר הלולאה מסתיימת, המילה הארוכה ביותר מוצגת.
אם האופציונלי in מילים חלק של ל הפקודה נשמטה, ל ברירת המחדל לעיבוד הפרמטרים המיקוםיים. אנחנו נשנה את שלנו המילה הארוכה ביותר סקריפט לשימוש בשיטה זו:
#! / bin / bash
# longest-word2: מצא את המחרוזת הארוכה ביותר בקובץ עבור i; לַעֲשׂוֹת
if [[ -r $i ]]; ואז max_word= max_len=0
עבור j ב-$(מחרוזות $i); do len=$(echo -n $j | wc -c)
if (( len > max_len )); ואז max_len=$len max_word=$j
fi
עשה
echo "$i: '$max_word' ($max_len תווים)"
פי בוצע
#! / bin / bash
# longest-word2: מצא את המחרוזת הארוכה ביותר בקובץ עבור i; לַעֲשׂוֹת
if [[ -r $i ]]; ואז max_word= max_len=0
עבור j ב-$(מחרוזות $i); do len=$(echo -n $j | wc -c)
if (( len > max_len )); ואז max_len=$len max_word=$j
fi
עשה
echo "$i: '$max_word' ($max_len תווים)"
פי בוצע
כפי שאנו יכולים לראות, שינינו את הלולאה החיצונית ביותר לשימוש ל במקום בזמן. על ידי השמטת רשימת המילים ב- ל הפקודה, הפרמטרים המיקוםיים משמשים במקום זאת. בתוך הלולאה, מופעים קודמים של המשתנה i שונו למשתנה j. השימוש של משמרת גם הוסר.
למה אני?
אולי שמתם לב שהמשתנה i נבחר עבור כל אחד מה- ל דוגמאות לולאות למעלה. למה? אין סיבה ספציפית למעשה, מלבד המסורת. המשתנה המשמש עם ל יכול להיות כל משתנה חוקי, אבל i הוא הנפוץ ביותר, ואחריו j ו k.
הבסיס למסורת זו מגיע משפת התכנות Fortran. ב-Fortran, משתנים לא מוצהרים המתחילים באותיות I, J, K, L ו-M מוקלדים באופן אוטומטי כמספרים שלמים, בעוד שמשתנים המתחילים בכל אות אחרת מוקלדים כאמיתיים (מספרים עם שברים עשרוניים). התנהגות זו הובילה את המתכנתים להשתמש במשתנים I, J ו-K עבור משתני לולאה, מכיוון שהיה צורך פחות עבודה להשתמש בהם כאשר היה צורך במשתנה זמני (כפי שיש לעתים קרובות משתני לולאה).
זה גם הוביל לשנינות המבוססת על פורטרן הבאה: "אלוהים הוא אמיתי, אלא אם כן הוכרז מספר שלם."