쉘 스크립트 기초

변태 개발자되기 프로젝트 - 쉘 스크립트 배열

레인스톤 2022. 3. 5. 11:20
반응형

안녕하세요 레인스톤입니다:)

오늘은 지난시간에 살펴본 변수에 이어서 배열에 대해 살펴보겠습니다.

배열

bash shell에서 배열을 만드는 법도 어렵지 않습니다.

즉 기존에 사용하시던 프로그래밍 언어의 방식과 크게 다르지 않습니다.

 

 #!/bin/sh

 TEST_ARR=(1 2 3 4 5)

 echo $TEST_ARR

 

자~ 지난 시간 변수 파트에서 배운 것처럼 변수명과 값사이에 공백없이 =을 사용해줍니다.

그리고 원하는 값을 ()안에 넣어주면 배열완성!

 

위 스크립트를 실행하면 1 2 3 4 5가 나오겠죠?

 

sh test.sh
1 ## 실행결과

 

???? 왜 1만나옴...?

진짜 당황해서 찾아보니 인덱스를 지정하지 않으면 첫 번째값만 출력된다고합니다.

배열의 모든 값을 출력하고 싶으면 인덱스에 * 또는 @를 사용해주면 된다고합니다.

 

 #!/bin/sh

 TEST_ARR=(1 2 3 4 5)

# 배열의 모든 값에 접근
 echo ${TEST_ARR[@]} # 실행결과 1 2 3 4 5
 echo ${TEST_ARR[*]} # 실행결과 1 2 3 4 5

 

이쯤되면 배열값을 한 번 바꿔보고 싶어지는데요?

따로 찾아보지말고 제가 알고있는 프로그래밍 방식대로 바꿔볼까요?

 

 #!/bin/sh

 TEST_ARR=(1 2 3 4 5)
 TEST_ARR[0]=0

 echo ${TEST_ARR[@]}

 

TEST_ARR에 0번 인덱스에 접근해서 0으로 바꿔준다!

그리고 결과를 살펴보면!?

 

sh test.sh
0 2 3 4 5

 

오 ~ 성공적으로 값이 바뀌는 걸 확인했습니다.

bash shell이라고 해서 막 그렇게 변태같지는 않은 거 같네요:)

 

이번엔 배열의 길이를 한 번 확인해보겠습니다.

요건 프로그래밍 지식으로는 안되더라구요 ㅠㅠ

bash shell에서는 일반적으로 count를 확인할 때 #을 사용하는 것 같아요!

 

 #!/bin/sh

 TEST_ARR=(1 2 3 4 5)

 echo ${#TEST_ARR[@]}

 

쨘 ~ 차이점이 보이시나요?

모든 배열에 접근을 하는 ${ARR[@]} 앞에 #을 넣어주면 됩니다.

 

sh test.sh
5

 

그럼 이렇게 배열의 길이(카운트)를 확인할 수 있습니다.

기본적인 배열 사용법 크게 어렵지 않죠?

 

끗!

 

bash shell의 세계는 멀고도 험한 것 같습니다.

다음 시간에는 반복문 사용법으로 돌아오겠습니다:)

오늘 하루도 화이팅~!

반응형