התמודד עם מערכי Bash - כיצד להכריז עליהם, לתפעל אותם ולמחוק אותם.
מערכים הם מאגרי נתונים המשמשים להחזקת ערכים שיש להם קשר מסוים זה לזה. שלא כמו ברוב שפות התכנות, מערכי Bash יכולים לאחסן ערכים של סוגי נתונים שונים באותו מערך.
ל-Bash יש שני סוגים של מערכים: מערכים באינדקס ומערכים אסוציאטיביים. עבור מערכים באינדקס, האינדקסים מתחילים מ-0 עד (n-1), כמקובל ברוב השפות. עם זאת, המערכים בבאש דלילים. משמעות הדבר היא שאתה יכול להקצות את רכיב המערך (n-1) מבלי שהקצית את האלמנט (n-2)th.
במדריך זה תלמדו כיצד לעבוד עם מערכים ב-Bash. בואו נתחיל.
הגדרת מערכים
ישנן שלוש דרכים להגדיר מערכים ב-Bash. בדומה למשתני Bash, יש לאתחל מערכים בעת היצירה. החריג היחיד לכך הוא אם אתה משתמש ב- לְהַכרִיז מילת מפתח. אתה גם צריך להיות בטוח שלא נשאר מקום משני הצדדים של אופרטור ההקצאה בזמן שאתה מאתחל את המערך.
השיטה הראשונה היא הקצאה מורכבת של ערכים לשם המערך. ישנן שתי דרכים לעשות זאת:
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)
בהקצאה המורכבת הראשונה, הערכים בסוגריים העגולים מוקצים ברצף מהאינדקס [0] ל [3].
עם זאת, בשני, הערכים מוקצים לאינדקס בכל סדר שהמתכנת ציין.
קָשׁוּר: מהם משתני סביבה בלינוקס? כל מה שאתה צריך לדעת
אם שמת לב היטב arr2, תשים לב לאינדקס הזה [2] נותר בחוץ. המערך עדיין ייווצר ללא שגיאות כלשהן. המשימה הזו היא למעשה הדגמה של אחסון דליל במערכים של Bash כפי שנגענו קודם לכן.
שימו לב שאין פסיקים המפרידים בין ערכי המערך. הערכים פשוט מופרדים על ידי רווחים.
השיטה השנייה מכריזה בעקיפין על המערך. אתה יכול פשוט להתחיל להקצות ערכים לרכיבי מערך null:
arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes
הדרך השלישית היא להכריז במפורש על המערך עם מילת המפתח לְהַכרִיז:
declare -a arrayName
פעולות על מערכים
כדי לגשת לרכיבי מערך, השתמש בתחביר זה: ${array[index]}
fruits=(mango banana apples)
echo${fruits[1]}# output is banana
אם אתה צריך להדפיס את כל המערך במקום זאת, השתמש ב- @ סמל בתור ה
אינדקס שֶׁל ${array[index]}:
echo${fruits[@]}
כדי לגלות את מספר האלמנטים במערך, השתמש ב- # סמל כפי שמוצג להלן:
echo ${#fruits[1]}
ייתכן שתצטרך גם לשנות רכיבי מערך - ראה את הדוגמה למטה כיצד לעשות זאת. זה דומה לאופן שבו אתה מוסיף אלמנט חדש. ההבדל היחיד הוא שאתה מחליף ערך לאינדקס שכבר יש לו ערך.
fruits[1]=pears
מערכים אסוציאטיביים
מערך שיש לו ערכים שרירותיים כמפתחות שלו נקרא מערך אסוציאטיבי. מערכים אלה משמשים לאחסון צמדי מפתח-ערך קשורים.
קָשׁוּר: כיצד להפוך סקריפטים של Bash לאפליקציות ניתנות ללחיצה באמצעות AppleScript
כדי להגדיר מערך אסוציאטיבי, עליך לעשות זאת במפורש באמצעות מילת המפתח לְהַכרִיז.
# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast
אתה יכול לגשת לרכיב חבר באותו אופן שאתה עושה למערכים שנוספו לאינדקס:
echo${animal[lion]}
אם ברצונך להדפיס את כל הערכים, תוכל להשתמש ב- @ סמל כפי שמוצג להלן:
echo${animal[@]}
אם ברצונך להדפיס את כל מקשי המערך, תוכל להשתמש ב- @ ו ! סמלים כפי שמודגם להלן:
echo${!animal[@]}
כדי למצוא את מספר האלמנטים שיש למערך האסוציאטיבי, השתמש באותו תחביר שבו תשתמש עם מערכים שנוספו לאינדקס (הוכח בסעיף האחרון).
אם ברצונך למחוק פריט מערך או את המערך כולו, השתמש בתחביר שלהלן:
unset arrayName[Key] # delete array item
unset arrayName # delete entire array
שימוש בפקודה printf
אולי שמתם לב שכל המאמר הזה משתמש ב- הֵד פקודה לפלט נתונים למעטפת. ה הֵד הפקודה פועלת עבור הדרכה זו אך יש לה מעט תכונות וגמישות בכל הנוגע לעיצוב מחרוזת.
אולם, ה printf הפקודה מציעה אפשרויות עיצוב ספציפיות יותר שהופכות את סקריפט של Bash לנוח. לומד את printf הפונקציה בוודאי תשפר את חוויית עיצוב המחרוזות והיעילות שלך ב-Bash.