ایستگاه های کاری آنلاین OnWorks Linux و Windows

لوگو

میزبانی آنلاین رایگان برای ایستگاه های کاری

<قبلی | فهرست | بعدی>

دسترسی به عناصر آرایه

بنابراین آرایه ها برای چه چیزی خوب هستند؟ همانطور که بسیاری از وظایف مدیریت داده را می توان با یک برنامه صفحه گسترده انجام داد، بسیاری از وظایف برنامه نویسی را نیز می توان با آرایه ها انجام داد.

بیایید یک مثال ساده جمع آوری و ارائه داده را در نظر بگیریم. ما یک اسکریپت می سازیم که زمان تغییر فایل ها را در یک فهرست مشخص بررسی می کند. از این داده ها، اسکریپت ما جدولی را ارائه می دهد که نشان می دهد فایل ها آخرین بار در چه ساعتی از روز اصلاح شده اند. چنین اسکریپتی می تواند برای تعیین زمان فعال ترین سیستم استفاده شود. این اسکریپت به نام ساعت، این نتیجه را ایجاد می کند:


تصویر

[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


# مقداردهی اولیه آرایه

برای من در {0..23}؛ انجام ساعت[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 ${hours[i]} $j ${hours[j]} انجام شد

printf "\nکل فایلها = %d\n" $count

# بررسی کنید که آرگومان یک دایرکتوری است اگر [[ ! -d $1 ]]; سپس

خروجی استفاده 1

fi


# مقداردهی اولیه آرایه

برای من در {0..23}؛ انجام ساعت[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 ${hours[i]} $j ${hours[j]} انجام شد

printf "\nکل فایلها = %d\n" $count


اسکریپت از یک تابع تشکیل شده است (استفاده) و بدنه اصلی با چهار بخش. در قسمت اول بررسی می کنیم که آرگومان خط فرمان وجود داشته باشد و دایرکتوری باشد. اگر اینطور نیست، پیام استفاده را نمایش می دهیم و خارج می شویم.

بخش دوم آرایه را مقداردهی اولیه می کند ساعت. این کار را با اختصاص دادن مقدار صفر به هر عنصر انجام می دهد. هیچ الزام خاصی برای آماده سازی آرایه ها قبل از استفاده وجود ندارد، اما اسکریپت ما باید اطمینان حاصل کند که هیچ عنصری خالی نیست. به روش جالب ساخت حلقه توجه کنید. با استفاده از انبساط بادبند ({0..23}ما قادریم به راحتی یک دنباله از کلمات را ایجاد کنیم برای فرمان

بخش بعدی داده ها را با اجرای برنامه جمع آوری می کند آمار برنامه روی هر فایل موجود در دایرکتوری. ما استفاده می کنیم برش برای استخراج ساعت دو رقمی از نتیجه. در داخل حلقه، باید صفرهای ابتدایی را از فیلد ساعت حذف کنیم، زیرا پوسته سعی می کند (و در نهایت شکست می خورد) مقادیر "00" تا "09" را به عنوان اعداد اکتال تفسیر کند (جدول 34-2 را ببینید). در مرحله بعد، مقدار عنصر آرایه مربوط به ساعت روز را افزایش می دهیم. در نهایت، یک شمارنده را افزایش می دهیم (تعداد دفعات مشاهده) برای ردیابی تعداد کل فایل های موجود در فهرست.

آخرین بخش اسکریپت محتویات آرایه را نمایش می دهد. ابتدا چند خط هدر خروجی می گیریم و سپس حلقه ای را وارد می کنیم که چهار ستون خروجی تولید می کند. در نهایت، جمع بندی نهایی فایل ها را خروجی می دهیم.


برترین سیستم عامل Cloud Computing در OnWorks: