כיצד לתפעל ולשלוט בנתונים עם מערך Bash

Kyzd Ltp L Wlslwt Bntwnym M M Rk Bash



משתנה מערך משמש בכל שפת תכנות לאחסון ערכים מרובים באמצעות אינדקס. אינדקס המערך יכול להיות מספר או מחרוזת. המערך המכיל את האינדקס המספרי נקרא 'מערך מספרי' והמערך המכיל את ערך המחרוזת כאינדקס נקרא 'מערך אסוציאטיבי'. ניתן ליצור גם מערכים מספריים וגם מערכים אסוציאטיביים ב-Bash. שיטות המניפולציה והשליטה בנתונים של מערך Bash מוצגות בפירוט באמצעות 15 דוגמאות במדריך זה.

רשימת תוכן:

  1. הגדר מערך לפי אינדקס
  2. הגדר מערך עם מספר ערכים
  3. הגדר מערך אסוציאטיבי
  4. ספור את ערכי המערך
  5. קרא את ערכי המערך לפי לולאה
  6. קרא את הערכים המיוחדים של המערך
  7. הכנס את ערכי המערך
  8. קרא תוכן קובץ לתוך המערך
  9. שלב את ערכי המערך
  10. שנה את ערכי המערך
  11. הסר את ערכי המערך
  12. חפש והחלף את ערכי המערך
  13. השתמש במערך כארגומנט פונקציה
  14. החזר את המערך מהפונקציה
  15. הפוך את המערך לריק

הגדר מערך לפי אינדקס

השיטה להכריז על מערך על ידי אזכור האינדקסים המספריים הרציפים או הלא-רציפים מוצגת בסקריפט הבא. סוג זה של מערך נקרא מערך מספרי. כאן, מערך '$books' נוצר על ידי הגדרת שלושה אינדקסים עוקבים ומערך '$products' נוצר על ידי הגדרת ארבעה אינדקסים לא עוקבים. כל הערכים של שני המערכים מודפסים באמצעות הפונקציה 'printf'.







#!/bin/bash

#הגדר את אינדקס המערך בסדר רציף

ספרים [ 0 ] = 'לומד את מעטפת הבש'

ספרים [ 1 ] = 'אופס אבטחת סייבר עם bash'

ספרים [ 2 ] = 'טיפים ל-Bash Command Line Pro'

הֵד 'כל הערכים של המערך הראשון:'

printf '%s\n' ' ${books[@]} '

#הגדר אינדקס מערך בסדר לא רציף

מוצרים [ 10 ] = 'עֵט'

מוצרים [ 5 ] = 'עִפָּרוֹן'

מוצרים [ 9 ] = 'רגול'

מוצרים [ 4 ] = 'נייר בגודל A4'

הֵד

הֵד 'כל הערכים של המערך השני:'

printf '%s\n' ' ${products[@]} '

תְפוּקָה :



הפלט הבא מופיע לאחר ביצוע הסקריפט. הערכים של שני המערכים מודפסים בפלט. סדר האינדקס נשמר בזמן ההדפסה עבור מערך האינדקסים הלא רציפים:



  p1





עבור למעלה

הגדר מערך עם מספר ערכים

ניתן להכריז על מערך מספרי עם מספר ערכים באמצעות הפקודה 'declare' עם האפשרות -a או ללא שימוש בפקודה 'declare'. בסקריפט הבא, המערך הראשון מוצהר באמצעות הפקודה 'declare' והמערך השני נוצר ללא שימוש בפקודה 'declare'.



#!/bin/bash

#הכרז על מערך מספרי עם מילת המפתח 'הכרז'

לְהַכרִיז שמות = ( 'מיכאל' 'דוד' 'אלכסנדר' 'תומס' 'רוברט' 'ריצ'רד' )

#הדפס את ערכי המערך

הֵד 'כל הערכים של המערך הראשון:'

printf '%s\n' ' ${names[@]} '

#הכרז על מערך מספרי ללא מילת מפתח 'הכרז'

ספרים = ( 'מדריכי כתיבה של מעטפת' 'ביש בש בוש!' 'למד את Bash מהר' )

#הוסף שורה חדשה

הֵד

#הדפס את ערכי המערך

הֵד 'כל הערכים של המערך השני:'

printf '%s\n' ' ${books[@]} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. הערכים של שני המערכים מודפסים כאן:

  p2

עבור למעלה

הגדר מערך אסוציאטיבי

המערך שמכיל את ערך המחרוזת כאינדקס נקרא מערך אסוציאטיבי. האפשרות -A משמשת עם הפקודה 'declare' ב-Bash כדי ליצור מערך Bash אסוציאטיבי. בסקריפט הבא, המערך האסוציאטיבי הראשון מוצהר על ידי אזכור האינדקסים בנפרד והמערך השני מוצהר על ידי אזכור כל צמדי המפתח-ערך בזמן הצהרת המערך.

#!/bin/bash

#הכרז על משתנה מערך אסוציאטיבי ללא ערך

לְהַכרִיז עוֹבֵד

#הקצה ערך בנפרד על ידי הגדרת האינדקס

עוֹבֵד [ 'תְעוּדַת זֶהוּת' ] = '78564'

עוֹבֵד [ 'שֵׁם' ] = 'שחקן זמין'

עוֹבֵד [ 'הודעה' ] = 'מנכ'ל'

עוֹבֵד [ 'שכר' ] = 300000

#הדפס שני ערכים של המערך

הֵד 'כרטיס עובד: ${employee[id]} '

הֵד 'שם העובד: ${employee[name]} '

#הכרז על מערך אסוציאטיבי עם ערכים

לְהַכרִיז קוּרס = ( [ קוד ] = 'CSE-206' [ שֵׁם ] = 'תכנות מונחה עצמים' [ שעה_אשראי ] = 2.0 )

#הוסף שורה חדשה

הֵד

#הדפס שני ערכי מערך של המערך השני

הֵד 'שם קורס: ${course[name]} '

הֵד 'שעת אשראי: ${course[credit_hour]} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. הערכים המסוימים של המערך האסוציאטיבי מודפסים כאן על ידי אזכור המפתח או ערך האינדקס:

  p3

עבור למעלה

ספור את ערכי המערך

שיטת ספירת הרכיבים הכוללים של המערך הנומרי והמערך האסוציאטיבי מוצגת בסקריפט הבא:

#!/bin/bash

#הכרז על מערך מספרי

לְהַכרִיז שמות = ( 'מיכאל' 'דוד' 'אלכסנדר' 'תומס' 'רוברט' 'ריצ'רד' ) ;

הֵד 'אורך המערך המספרי הוא ${#names[@]} '

#הכרז על מערך אסוציאטיבי

לְהַכרִיז קוּרס = ( [ קוד ] = 'CSE-206' [ שֵׁם ] = 'תכנות מונחה עצמים' [ שעה_אשראי ] = 2.0 )

הֵד 'אורך המערך האסוציאטיבי הוא ${#course[@]} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. אורך המערך של המערכים המספריים והאסוציאטיביים מודפס כאן:

  p4

עבור למעלה

קרא את ערכי המערך לפי לולאה

השיטה לקריאת כל הערכים של מערך מספרי ומערך אסוציאטיבי באמצעות לולאת 'for' מוצגת בסקריפט הבא:

#!/bin/bash

#הכרז על מערך מספרי

לְהַכרִיז ספרים = ( 'מדריכי לימוד של סקריפטים של מעטפת' 'ביש בש בוש!' 'למד את Bash במהירות' )

#הדפס את ערכי המערך המספרי

הֵד 'ערכי מערך מספריים הם:'

ל ב ב ' ${books[@]} '

לַעֲשׂוֹת

הֵד ' $in '

בוצע

הֵד

#הכרז על מערך אסוציאטיבי עם ערכים

לְהַכרִיז לקוחות = (

[ תְעוּדַת זֶהוּת ] = 'H-5623'

[ שֵׁם ] = 'אדון. אחנף'

[ כתובת ] = '6/A, Dhanmondi, דאקה.'

[ טלפון ] = '+8801975642312' )

#הדפס את ערכי המערך האסוציאטיבי

הֵד 'ערכי מערך אסוציאטיביים הם:'

ל ק ב ' ${!clients[@]} '

לַעֲשׂוֹת

הֵד ' $k => ${clients[$k]} '

בוצע

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. כאן, הערכים של המערך המספרי וצמדי המפתח-ערך של המערך האסוציאטיבי מודפסים בפלט:

  p5

עבור למעלה

קרא את טווח הערכים המיוחד של המערך

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

#!/bin/bash

#הכרז על מערך מספרי

לְהַכרִיז עוגות = ( 'עוגת שוקולד' 'עוגת וניל' 'עוגת קטיפה אדומה' 'עוגת תותים' )

#הדפס את ערכי המערך המסוימים

הֵד 'האלמנטים השני והשלישי של ערכי המערך הם:'

printf '%s\n' ' ${cakes[@]:1:2} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. הערכים השני והשלישי של המערך הם 'עוגת וניל' ו'עוגת קטיפה אדומה' אשר מודפסים בפלט:

  p6

עבור למעלה

הכנס את ערך המערך

השיטה של ​​הוספת ערכים מרובים בסוף המערך מוצגת בסקריפט הבא. המערך הראשי שהוא '$books' מכיל שלושה אלמנטים ושני אלמנטים מתווספים בסוף מערך '$books'.

#!/bin/bash

#הכרז על מערך מספרי

לְהַכרִיז ספרים = ( 'מדריכי לימוד של סקריפטים של מעטפת' 'ביש בש בוש!' 'למד את Bash במהירות' )

#הדפס את ערכי המערך לפני ההוספה

הֵד 'ערכי מערך:'

printf '%s\n' ' ${books[@]} '

הֵד

ספרים = ( ' ${books[@]} ' 'שורת פקודה ותנ'ך של מעטפת של לינוקס' 'מדריך תסריטאות מתקדם של Bash מאת מנדל קופר' )

#הדפס את ערכי המערך לאחר ההוספה

הֵד 'ערכי מערך לאחר הוספת שני ערכים:'

printf '%s\n' ' ${books[@]} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. ערכי המערך לפני ואחרי הוספת ערכים חדשים מודפסים בפלט:

  עמ' 7

עבור למעלה

קרא את תוכן הקובץ לתוך המערך

צור קובץ טקסט בשם 'fruits.txt' עם התוכן הבא כדי לבדוק את הסקריפט של דוגמה זו:

fruits.txt

מנגו

ג'קפרי

אננס

תפוז

בננה

בסקריפט הבא, התוכן של קובץ מאוחסן במערך בשם '$data'. כאן, כל שורה של הקובץ מאוחסנת ככל אלמנט של המערך. לאחר מכן, ערכי המערך מודפסים.

#!/bin/bash

#קרא את שם הקובץ מהמשתמש

לקרוא -עמ' 'הזן את שם הקובץ:' שם קובץ

אם [ $filename ]

לאחר מכן

#קרא את תוכן הקובץ לתוך מערך'

נתונים = ( ` חתול ' $filename ' ` )

הֵד 'תוכן הקובץ מובא להלן:'

#קרא את הקובץ שורה אחר שורה

ל קַו ב ' ${data[@]} '

לַעֲשׂוֹת

הֵד $line

בוצע

לִהיוֹת

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. הפלט שמוצג על ידי הפקודה 'cat' והפלט של הסקריפט דומים מכיוון שלאותו קובץ ניגשים על ידי הפקודה 'cat' והסקריפט:

  עמ' 8

עבור למעלה

שלב את ערכי המערך

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

#!/bin/bash

#הכרז על המערך הראשון

לְהַכרִיז רשימת שמות1 = ( 'מיכאל' 'דוד' 'אלכסנדר' 'תומס' )

הֵד 'ערכי המערך הראשונים הם:'

printf '%s,' ${nameList1[@]}

הֵד

#הכרז על המערך השני

לְהַכרִיז רשימת שמות2 = ( 'רוברט' 'ריצ'רד' )

הֵד 'ערכי המערך השני הם:'

printf '%s,' ${nameList2[@]}

הֵד

#צור מערך חדש על ידי שילוב שני מערכים

מערך_שילוב = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

הֵד 'ערכי המערך המשולבים הם:'

printf '%s,' ${combined_array[@]}

הֵד

תְפוּקָה :

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

  עמ' 9

עבור למעלה

שנה את ערכי המערך

השיטה לעדכון ערכי מערך אחד או יותר על ידי אזכור האינדקס מוצגת בסקריפט הבא:

#!/bin/bash

#הכרז על המערך הראשון

לְהַכרִיז רשימת שמות = ( 'מיכאל' 'דוד' 'אלכסנדר' 'תומס' )

הֵד 'ערכי מערך:'

printf '%s,' ${nameList[@]}

הֵד

#עדכן את הערך השני של המערך

רשימת שמות [ 1 ] = 'רוברט'

הֵד 'ערכי מערך לאחר עדכון:'

printf '%s,' ${nameList[@]}

הֵד

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. הערכים של המערך הראשי והמערכים המעודכנים מודפסים בפלט:

  עמ' 10

הסר את ערכי המערך

הפקודה 'unset' משמשת להסרת האלמנט המסוים או את כל האלמנטים של המערך. בסקריפט הבא, האלמנט השני של המערך מוסר.

#!/bin/bash

#הכרז על מערך מספרי

לְהַכרִיז ספרים = ( 'מדריכי לימוד של סקריפטים של מעטפת' 'ביש בש בוש!' 'למד את Bash במהירות' )

#הדפס את ערכי המערך לפני ההסרה

הֵד 'ערכי מערך:'

printf '%s\n' ' ${books[@]} '

הֵד

#הסר את האלמנט השני

לא מוגדר ספרים [ 1 ]

#הדפס את ערכי המערך לאחר ההסרה

הֵד 'ערכי מערך לאחר הסרת הערך השני:'

printf '%s\n' ' ${books[@]} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. הערכים של המערך הראשי וערכי המערך לאחר הסרת ערך אחד מודפסים בפלט:

  עמ' 11

עבור למעלה

חפש והחלף את ערכי המערך

בסקריפט הבא, הערך המסוים של המערך מוחלף בערך אחר אם ערך החיפוש המוגדר בדפוס מותאם לערך כלשהו של מערך '$names'.

#!/bin/bash

#הכרז על המערך הראשון

לְהַכרִיז שמות = ( 'מיכאל' 'דוד' 'אלכסנדר' 'תומס' )

#הדפס את ערכי המערך המקוריים

הֵד 'ערכי מערך מקוריים:'

printf '%s\n' ' ${names[@]} '

#צור מחרוזת לאחר החלפת ערכי המערך

updated_array = ${names[@]/אלכסנדר/ריצ'רד}

#הדפס את ערכי המערך לאחר החלפה

הֵד 'ערכי מערך לאחר החלפה:'

printf '%s\n' ' ${updated_array[@]} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. הערכים של המערך הראשי וערכי המערך לאחר החלפת ערך מודפסים בפלט:

  עמ' 12

עבור למעלה

השתמש במערך כארגומנט פונקציה

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

#!/bin/bash

#הכרז על מערך של מספרים

לְהַכרִיז מספרים = ( 10 6 ארבע חמש 13 8 )

#הגדר פונקציה שתיקח ערך ארגומנט

func ( )

{

#קרא את הטיעון הראשון

מספרים = $1

#הדפס את ערכי המערך

הֵד 'ערכי מערך:'

printf '%d\n' ' ${numbers[@]} '

}

#קרא לפונקציה עם המערך כארגומנט

func ' ${numbers[@]} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט:

  עמ' 13

עבור למעלה

החזר מערך מהפונקציה

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

#!/bin/bash

#הגדר פונקציה שקוראת ארבעה ערכי ארגומנט

func ( )

{

#קרא את ערכי הארגומנט

מספרים = ( $1 $2 $3 $4 )

#החזר את המערך

הֵד ' ${numbers[@]} '

}

#קרא לפונקציה עם שלושה ארגומנטים

return_val =$ ( func 78 ארבע חמש 90 23 )

#אחסן את ערך ההחזרה במערך

לקרוא על אחד <<< $return_val

#הדפס את הערכים של המערך המוחזר

הֵד 'הערכים של המערך הם:'

ל ב ב ' ${num[@]} '

לַעֲשׂוֹת

הֵד ' $in '

בוצע

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט:

עבור למעלה

הפוך את המערך לריק

הסקריפט הבא מציג את השיטה להפיכת מערך לריק באמצעות הפקודה 'unset'. המספר הכולל של ערכי המערך מודפס לפני ואחרי הפיכת המערך לריק.

#!/bin/bash

#הכרז על מערך של מספרים

לְהַכרִיז מספרים = ( 10 6 ארבע חמש 13 80 )

הֵד 'מספר ערכי מערך: ${#numbers[@]} '

#הפוך את המערך לריק

לא מוגדר מספרים

הֵד 'מספר ערכי המערך לאחר הפיכת המערך לריק: ${#numbers[@]} '

תְפוּקָה :

הפלט הבא מופיע לאחר ביצוע הסקריפט. מספר האלמנטים של המערך הפך ל-0 לאחר הפיכת המערך לריק:

  עמ' 15

עבור למעלה

סיכום

שיטות שונות להכרזה, גישה, שינוי והסרה של משתני המערך בסקריפט Bash מוצגות במדריך זה באמצעות 15 דוגמאות פשוטות. אנו מקווים שמדריך זה יעזור למשתמשי Bash להכיר את השימושים במערך Bash בפירוט.