אנדרואיד

מערכי בש

תוכן עניינים:

Anonim

מערכים הם אחד ממבני הנתונים המשומשים והבסיסיים ביותר. אתה יכול לחשוב שמערך הוא משתנה שיכול לאחסן בתוכו מספר משתנים., אנו מכסים את מערכי ה- 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}"

0 1 2 3

אורך המערך

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

${#array_name} התחביר זהה לזה כאשר מתייחס לכל האלמנטים עם תוספת של התו # לפני שם המערך.

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

עיין במערך

הדרך הנפוצה ביותר לחזור על כל פריט במערך היא באמצעות הלולאה 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}"

Hydrogen Helium Beryllium

סיכום

הסברנו כיצד ליצור מערכים בעלי צמודים מסודרים ואינדקסיביים. הראנו גם כיצד לבצע איטרציה בין המערכים, לחשב את אורך המערך ולהוסיף ולהסיר אלמנטים.

מסוף bash