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 "사용법: ${0##*/} 디렉토리" >&2

}

#! / bin / bash

# 시간: 수정 시간 사용량에 따라 파일 수를 계산하는 스크립트 () {

echo "사용법: ${0##*/} 디렉토리" >&2

}


# [[ ! -d $1 ]]; 그 다음에

이용출구 1

fi


# 배열 초기화

나는 {0..23}에서; 시간[i]=0; 완료


# 데이터를 수집하다

for i in $(stat -c %y "$1"/* | cut -c 12-13); j=${i/#0} 하세요

((++시간[j])) ((++개수))


# 데이터 표시

echo -e "시간\t파일\t시간\t파일" echo -e "----\t----\t----\t----" for i in {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


# 배열 초기화

나는 {0..23}에서; 시간[i]=0; 완료


# 데이터를 수집하다

for i in $(stat -c %y "$1"/* | cut -c 12-13); j=${i/#0} 하세요

((++시간[j])) ((++개수))


# 데이터 표시

echo -e "시간\t파일\t시간\t파일" echo -e "----\t----\t----\t----" for i in {0..11} ; 하다

j=$((i + 12))

printf "%02d\t%d\t%02d\t%d\n" $i ${시간[i]} $j ${시간[j]} 완료

printf "\n총 파일 = %d\n" $count


스크립트는 하나의 함수(용법) 및 XNUMX개의 섹션으로 구성된 본체. 첫 번째 섹션에서는 명령줄 인수가 있고 디렉터리인지 확인합니다. 그렇지 않은 경우 사용법 메시지를 표시하고 종료합니다.

두 번째 섹션에서는 배열을 초기화합니다. 시간. 이는 각 요소에 XNUMX 값을 할당하여 수행됩니다. 사용하기 전에 배열을 준비해야 하는 특별한 요구 사항은 없지만, 스크립트에서는 비어 있는 요소가 없는지 확인해야 합니다. 루프가 구성되는 흥미로운 방식에 주목하십시오. 버팀대 확장({0..23}), 우리는 다음 단어에 대한 일련의 단어를 쉽게 생성할 수 있습니다. for 명령.

다음 섹션에서는 다음을 실행하여 데이터를 수집합니다. 스탯 디렉토리의 각 파일에 대해 프로그램을 실행합니다. 우리는 사용 절단 결과에서 두 자리 시간을 추출합니다. 루프 내에서 시간 필드에서 앞에 오는 00을 제거해야 합니다. 왜냐하면 쉘이 "09"부터 "34"까지의 값을 2진수로 해석하려고 시도(결국 실패)하기 때문입니다(표 XNUMX-XNUMX 참조). 다음으로, 하루 중 시간에 해당하는 배열 요소의 값을 증가시킵니다. 마지막으로 카운터(계산) 디렉토리에 있는 총 파일 수를 추적합니다.

스크립트의 마지막 섹션에는 배열의 내용이 표시됩니다. 먼저 두 개의 헤더 라인을 출력한 다음 XNUMX개의 출력 열을 생성하는 루프를 입력합니다. 마지막으로 파일의 최종 집계를 출력합니다.


OnWorks의 최고 OS 클라우드 컴퓨팅: