Bash:
שימוש במערכים אסוציאטיביים
איך לעשות:
ראשית, הגדירו מערך אסוציאטיבי ב-Bash:
declare -A my_array
לאחר מכן, תוכלו להתחיל למלא אותו בערכים, תוך שימוש במחרוזות כמפתחות:
my_array["name"]="Linux Journal"
my_array["topic"]="Programming"
לגישה לאלמנט, השתמשו במפתח שלו:
echo ${my_array["name"]} # מוציא: Linux Journal
הדפסת מפתחות וערכים באופן פשוט:
for key in "${!my_array[@]}"; do
echo "$key: ${my_array[$key]}"
done
פלט לדוגמה יכול להראות כך:
name: Linux Journal
topic: Programming
להוספה או שינוי של אלמנטים, פשוט הקצו ערך למפתח, בדומה להכנסה ההתחלתית:
my_array["readers"]="You"
ולהסרת אלמנט, השתמשו ב-unset
:
unset my_array["topic"]
טבילה עמוקה
מערכים אסוציאטיביים הוצגו בגרסה 4.0 של Bash, ולכן הם הוספה יחסית חדשה לשפה. לפני הצגתם, טיפול במערכים עם אינדקסים שאינם מספרים שלמים היה מסורבל, ולעיתים דרש פתרונות עקיפים או כלים חיצוניים כמו awk
או sed
.
מאחורי הקלעים, Bash מממשת מערכים אסוציאטיביים באמצעות טבלאות גיבוב. המימוש הזה מאפשר חיפוש מפתח יעיל, שנשאר די קבוע בלי תלות בגודל המערך, תכונה קריטית לביצועים בהרצת סקריפטים.
למרות שמערכים אסוציאטיביים ב-Bash מביאים הרבה כוח וגמישות לתסריטי שורת הפקודה, הם גם מציעים סט של מגבלות, כמו למשל היותם פחות נוחים לעבודה בהשוואה למערכים בשפות ברמה גבוהה יותר כמו Python או JavaScript. למשימות מתקדמות של טיפול בנתונים, עשוי להיות עדיין שווה לשקול כלים חיצוניים או שפות המתאימות יותר לעבודה.
עם זאת, למשימות תסריטיות טיפוסיות רבות, מערכים אסוציאטיביים מספקים כלי יקר ערך בערכת הכלים של מתכנת ה-Bash, ומאפשרים סקריפטים יותר קריאים וניתנים לתחזוקה על ידי שימוש במפתחות מחרוזת עם משמעות במקום אינדקסים מספריים.