OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

גישה לאלמנטים מערכים

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

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


תמונה

[me@linuxbox ~]$ שעה (ות .


שעה

קבצים

שעה

קבצים

----

-----

----

-----

00

0

12

11

01

1

13

7

02

0

14

1

03

0

15

7

04

1

16

6

05

1

17

5

06

6

18

4

07

3

19

4

08

1

20

1

09

14

21

0

10

2

22

0

11

5

23

0

סך הקבצים = 80


אנו מבצעים את שעות האחרונות תוכנית, מציינת את הספרייה הנוכחית כיעד. זה מייצר טבלה המראה, עבור כל שעה ביום (0-23), כמה קבצים שונו לאחרונה. הקוד לייצור זה הוא כדלקמן:



#! / bin / bash

# שעות: סקריפט לספירת קבצים לפי שימוש בזמן שינוי () {

echo "usage: ${0##*/} directory" >&2

}

#! / bin / bash

# שעות: סקריפט לספירת קבצים לפי שימוש בזמן שינוי () {

echo "usage: ${0##*/} directory" >&2

}


# בדוק שהארגומנט הוא ספרייה אם [[ ! -d $1 ]]; לאחר מכן

יציאת שימוש 1

fi


# אתחול מערך

עבור i ב-{0..23}; do hours[i]=0; בוצע


# איסוף מידע

עבור i ב-$(stat -c %y "$1"/* | cut -c 12-13); לעשות j=${i/#0}

((++שעות[j])) ((++ספירה))

עשה


# נתוני תצוגה

echo -e "Hour\tFiles\tHour\tFiles" echo -e "----\t-----\t----\t-----" עבור i ב-{0..11} ; לַעֲשׂוֹת

j=$((i + 12))

printf "%02d\t%d\t%02d\t%d\n" $i ${שעות[i]} $j ${שעות[j]} בוצע

printf "\nסה"כ קבצים = %d\n" $count

# בדוק שהארגומנט הוא ספרייה אם [[ ! -d $1 ]]; לאחר מכן

יציאת שימוש 1

fi


# אתחול מערך

עבור i ב-{0..23}; do hours[i]=0; בוצע


# איסוף מידע

עבור i ב-$(stat -c %y "$1"/* | cut -c 12-13); לעשות j=${i/#0}

((++שעות[j])) ((++ספירה))

עשה


# נתוני תצוגה

echo -e "Hour\tFiles\tHour\tFiles" echo -e "----\t-----\t----\t-----" עבור i ב-{0..11} ; לַעֲשׂוֹת

j=$((i + 12))

printf "%02d\t%d\t%02d\t%d\n" $i ${שעות[i]} $j ${שעות[j]} בוצע

printf "\nסה"כ קבצים = %d\n" $count


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

החלק השני מאתחל את המערך שעות האחרונות. זה עושה זאת על ידי הקצאת לכל אלמנט ערך של אפס. אין דרישה מיוחדת להכין מערכים לפני השימוש, אבל הסקריפט שלנו צריך להבטיח שאף אלמנט לא ריק. שימו לב לדרך המעניינת שהלולאה בנויה. על ידי שימוש בהרחבת סד ({0..23}), אנו מסוגלים ליצור בקלות רצף של מילים עבור ה ל פקודה.

הסעיף הבא אוסף את הנתונים על ידי הפעלת ה stat תוכנית על כל קובץ בספריה. אנו משתמשים לחתוך כדי לחלץ את השעה הדו ספרתית מהתוצאה. בתוך הלולאה, עלינו להסיר אפסים מובילים משדה השעה, מכיוון שהקליפה תנסה (ובסופו של דבר תיכשל) לפרש את הערכים "00" עד "09" כמספרים אוקטליים (ראה טבלה 34-2). לאחר מכן, אנו מגדילים את הערך של רכיב המערך המתאים לשעה ביום. לבסוף, אנו מגדילים מונה (לספור) כדי לעקוב אחר המספר הכולל של קבצים בספרייה.

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


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: