본문 바로가기
IT/리눅스 쉘 스크립트

리눅스 배열 선언 응용 사용법 - ls 배열, 쉘스크립트 배열, for문 배열

by 꾸꾸웍스 2023. 1. 7.
반응형

리눅스 배열 선언 응용 사용법
리눅스 배열 선언 응용 사용법

 

 

리눅스 쉘, 쉘스크립트에서 배열 선언을 응용하여 ls 명령어를 이용해 배열을 응용하고, 쉘스크립트 내 파일 읽기로 배열을 선언하고 배열을 출력하는 방법, for문을 이용하여 배열에 넣는 방법, shell 배열 선언에 대한 내용을 알아보겠습니다. 이전포스팅에 배열에 대한 개념, 배열 선언, 배열 삭제, 배열 출력에 대한 개념설명이 있으니 아래 포스팅을 참고해주시기 바랍니다.

 

 

※ 목차 구성
1) ls 배열 선언
2) shell 배열 선언
3) for문 배열 선언
4) 쉘스크립트 파일 읽기 배열 선언

 

 

리눅스 배열에 대한 개념 설명과 쉘 또는 쉘스크립트에서 배열 선언, 배열 출력, 배열 삭제 등 기초 및 개념에 대한 설명은 아래 포스팅을 참고하시기 바랍니다.

 

!! 리눅스 배열 기초 사용법(클릭)!!

 

리눅스 배열 사용법 규칙 및 기초 예제 실습 - Linux shell script array

리눅스 배열에 익숙하지 않거나 배열에 대해 잘 모른다면 아래 내용을 통해 배열을 쉽게 터득하고 예제 실습을 통해 쉽게 배열을 배울 수 있습니다. 아래 내용은 리눅스 배열에 대한 개념과 리

rhrhth23.tistory.com

 

 

리눅스 ls 배열 선언

리눅스 쉘(shell) 또는 쉘스크립트(shell script)에서 배열을 선언하여 사용할 수 있습니다. 배열을 선언하는 방법은 동일하며 소괄호 안에 억음부호 사이에 명령이 들어가 배열을 선언하는 방법입니다. 이 방법은 ls 명령어로 많은 파일 및 디렉터리 파일명을 배열에 넣는 방법입니다.

 

배열변수이름=(`명령`)

 

root@server # ls -l
drwxr-xr-x 2 root root 6 Jan 6 12:08 apple
drwxr-xr-x 2 root root 6 Jan 6 12:08 banana
drwxr-xr-x 2 root root 6 Jan 6 12:08 melon

root@server # fruit=(`ls`)

root@server # echo ${fruit[@]}
apple banana melon

root@server # echo ${fruit[2]}
melon

root@server # echo ${fruit[@]}
3

 

fruit 배열 변수이름을 정한 후 억음부호 사이에 ls명령어를 넣은 후 echo명령어로 배열을 출력한 예시입니다. 현재 경로에 있는 파일 및 디렉토리 이름의 원소들을 fruit 배열에 선언되어 출력을 할 수 있습니다.

 

 

반응형

 

 

리눅스 shell 배열 선언 응용

shell에서 배열을 선언하는 방법은 이전 포스팅 내용과 동일하지만 배열의 원소에 붙은 번호 인덱스를 임의로 정하여 인덱스를 지정하는 방법입니다. 아래 예시에는 3개의 원소 중 가운데에 인덱스 번호를 임의로 지정하였지만 원소 순서와 인덱스 번호 순서 상관없이 아무 자리에 원하는 인덱스를 지정할 수 있습니다.

 

배열변수이름=(원소1 [인덱스]=원소2 원소3)

 

root@server # fruit=(apple banana melon)

root@server # echo ${fruit[2]}
melon

------------------------------------------------

root@server # fruit=(apple [15]=banana melon)

root@server # echo ${fruit[16]}
melon

 

 

 

 

리눅스 for문 배열 선언

for문을 이용하여 정해진 변수들을 배열에 넣는 방법입니다. ls 배열을 선언하는 방법과 동일하며 for문 변수의 숫자, 문자 모두 배열을 선언할 수 있습니다. for문을 배열에 넣는 방법 또한 억음 부호가 들어가 소괄호 안에 들어가야 됩니다.

 

다만 주의할 점이 있다면 for문 변수에 억음부호가 들어가는 곳 앞에 역슬래쉬를 사용해야 됩니다. 

 

배열변수선언=(`for문코드`)

 

▼배열 선언 전 seq 명령어를 이용하여 1부터 10까지 출력하는 for문 예시

root@server # for AA in `seq -w 1 10`
> do
> echo $AA
> done
01
02
03
04
05
06
07
08
09
10

 

위 for문의 명령으로 아래처럼 배열을 선언 후 출력합니다.

 

▼ for문을 이용하여 1부터 10까지 배열을 선언한 예제

root@server # number=(`for AA in \`seq -w 1 10\`; do echo $AA; done`)

root@server # echo ${number[3]}
04

root@server # echo ${#number[@]}
10

root@server # echo ${number[@]}
01 02 03 04 05 06 07 08 09 10

 

▼ for문을 이용하여 문자로 배열을 선언한 예제

root@server # fruit=(`for AA in \`echo "apple banana melon"\`; do echo $AA; done`)

root@server # echo ${fruit[0]}
apple

root@server # echo ${#fruit[@]}
3

root@server # echo ${fruit[@]}
apple banana melon

 

 

 

 

리눅스 쉘스크립트 파일 읽기 배열 선언

쉘스크립트 내 배열을 선언하는 방법은 이전 포스팅 내용에 배열을 선언하는 방법과 위에 배열을 선언하는 방법 모두 쉘스크립트에서 사용할 수 있습니다. 하지만 많은 양의 데이터를 직접 코드를 작성하여 배열에 선언하는 방식이 아닌 많은 양의 데이터 파일을 읽어 배열을 선언하는 방법은 아래와 같습니다.

 

▼ script.sh 파일 내용

#!/bin/bash

FILE=`cat /home/number.txt`

array=($FILE)

echo ${array[0]} ${array[10]} ${array[100]} ${array[999]}

 

▼ /home/number.txt 파일 내용

apple0001
apple0002
apple0003
...
apple0999
apple1000

 

/home/number.txt 내용에는 apple0001부터 apple1000까지의 1000줄이 적혀있는 내용의 파일입니다. 이 파일을 script.sh 파일 내 쉘스크립트를 작성할 때 cat명령어를 이용하여 FILE 변수로 지정한 후 array변수에 FILE 변수를 넣습니다.

 

다른 방법으로는 FILE변수를 선언하지 않고 FILE변수 내용 자체를 array에 넣어도 되지만 코드 내용이 길어지거나 쉘스크립트를 수정해야 되는 일이 있을 수 있기 때문에 되도록 따로 분리하여 변수는 쉘스크립트 상단에 위치하는 것이 좋습니다.

 

 

▼쉘스크립트 파일 읽기 배열 출력 결과

root@server # ./script.sh
apple0001 apple0011 apple0101 apple1000

 

 

 

반응형
그리드형

댓글