תוכן עניינים:
- מערכי בש
- יצירת מערכי בש
- יצירת מערכים צמודים לאינדקס
- יצירת מערכים אסוציאטיביים
- פעולות מערך
- אלמנטים הפניה
- אורך המערך
- עיין במערך
- הוסף אלמנט חדש
- מחק אלמנט
- סיכום
מערכים הם אחד ממבני הנתונים המשומשים והבסיסיים ביותר. אתה יכול לחשוב שמערך הוא משתנה שיכול לאחסן בתוכו מספר משתנים., אנו מכסים את מערכי ה- Bash, ונסביר כיצד להשתמש בהם בתסריטים של Bash שלך.
מערכי בש
בש תומך במערכי מערכים בעלי אינדקסציה מספרית חד ממדית. אל מערכים נומריים מופנים מספרים שלמים, ומפנים אסוציאטיביים באמצעות מיתרים.
ניתן לגשת למערכים צמודים מספריים מהסוף באמצעות מדדים שליליים, המדד של
-1
מתייחס לאלמנט האחרון. המדדים אינם חייבים להיות רצופים.
שלא כמו מרבית שפות התכנות, אלמנטים של מערך הבש אינם חייבים להיות מאותו סוג נתונים. ניתן ליצור מערך המכיל מחרוזות ומספרים כאחד.
באש אינו תומך במערכים רב מימדיים ולא ניתן יהיה לרכוש מערכי מערך שהם גם מערכים.
אין הגבלה על המספר המרבי של האלמנטים שניתן לאחסן במערך.
יצירת מערכי בש
ניתן לאתחל מערכים בבש בדרכים שונות.
יצירת מערכים צמודים לאינדקס
משתני באש אינם מודפסים, כל משתנה יכול לשמש כמערך לאינדקס מבלי להכריז עליו.
כדי להכריז במפורש על מערך, השתמש בהצהרה המובנית:
declare -a array_name
אחת הדרכים ליצור מערך באינדקס היא באמצעות הטופס הבא:
array_name=value_1 array_name=value_2 array_name=value_n
כאשר
index_*
הוא מספר חיובי.
דרך נוספת ליצור מערך מספרי היא לציין את רשימת האלמנטים בתוך סוגריים, מופרדים על ידי שטח ריק:
array_name=(element_1 element_2 element_N)
כאשר המערך נוצר באמצעות הטופס שלמעלה, האינדקס מתחיל באפס כלומר לאלמנט הראשון יש אינדקס של
0
.
יצירת מערכים אסוציאטיביים
בשונה מאינדקס מספרי, יש להכריז על המערכים האסוציאטיביים לפני שניתן יהיה להשתמש בהם.
כדי להכריז על מערך אסוציאטיבי השתמשו בהצהרה המובנית עם האפשרות
-A
(אותיות גדולות):
declare -A array_name
ניתן ליצור מערכים אסוציאטיביים באמצעות הטופס הבא:
declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz
כאשר
index_*
יכול להיות כל מחרוזת.
אתה יכול גם ליצור מערך אסוציאטיבי באמצעות הטופס שלהלן:
declare -A array_name array_name=(=value_foo =value_bar =value_xyz)
פעולות מערך
תחביר של מערכי באש אולי נראה בהתחלה מעט מוזר, אבל זה יהיה הגיוני יותר לאחר שתקראו את המאמר הזה.
אלמנטים הפניה
כדי להתייחס לאלמנט בודד, עליך לדעת את אינדקס האלמנטים.
ניתן להפנות לכל אלמנט באמצעות התחביר הבא:
${array_name}
התחביר לגישה לאלמנט מערך דומה לתחביר של מרבית שפות התכנות. הסד המתולתל
${}
נדרש כדי להימנע ממפעילי הרחבת שמות הקבצים של מעטפת.
בואו נדפיס את האלמנט באינדקס של
1
:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}
Helium
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium
ההבדל היחיד בין
@
ל
*
הוא כאשר הטופס
${my_array}
מוקף בציטוטים כפולים. במקרה זה,
*
מתרחב למילה יחידה בה מופרדים רכיבי מערך עם רווח.
@
מרחיב כל רכיב מערך למילה נפרדת. זה חשוב במיוחד כשמשתמשים בטופס כדי להכיר אנלפביתים דרך רכיבי מערך.
כדי להדפיס את מקשי המערך הוסף את
!
מפעיל לפני שם המערך:
${!array_name}
הנה דוגמה:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"
אורך המערך
כדי לקבל אורך מערך, השתמש בטופס הבא:
${#array_name}
התחביר זהה לזה כאשר מתייחס לכל האלמנטים עם תוספת של התו
#
לפני שם המערך.
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}
עיין במערך
הדרך הנפוצה ביותר לחזור על כל פריט במערך היא באמצעות הלולאה for:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done
הקוד שלמעלה יחזר על המערך ויודפס כל אלמנט בשורה חדשה:
Hydrogen Helium Lithium Beryllium
להלן דוגמה כיצד להדפיס את כל המפתחות והערכים:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
דרך נוספת לעבור דרך מערך היא לקבל את אורך המערך ולהשתמש בלולאה
C style
:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
הוסף אלמנט חדש
כדי להוסיף אלמנט חדש למערך bash ולציין את האינדקס שלו השתמש בטופס הבא:
my_array="New Element"
הנה דוגמה:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Aluminum
דרך נוספת להוסיף אלמנט חדש למערך מבלי לציין את האינדקס היא באמצעות המפעיל
+=
. אתה יכול להוסיף אלמנט אחד או מרובים:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
מחק אלמנט
כדי למחוק אלמנט בודד, עליך לדעת את אינדקס האלמנטים. ניתן להסיר אלמנט באמצעות הפקודה
unset
:
unset my_array
בוא נראה דוגמא:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"
סיכום
הסברנו כיצד ליצור מערכים בעלי צמודים מסודרים ואינדקסיביים. הראנו גם כיצד לבצע איטרציה בין המערכים, לחשב את אורך המערך ולהוסיף ולהסיר אלמנטים.
מסוף bash