본문 바로가기

리눅스

리눅스 bash 스크립트를 이용한 for 반복문, if 조건문 (bash script)

반응형

안녕하세요. 교육이입니다.^^

 

오늘은 리눅스의 bash 스크립트를 사용하는 방법에 대해 알아볼게요.

bash 스크립트는 명령어 창에 입력할 내용을 파일로 만들어서 파일을 실행시킴으로

작업을 수행하는 것이라고 생각할 수 있어요.

이렇게 파일로 작성해 두면, 내가 어떤 작업을 수행했는지 알기 쉽고,

나중에 비슷한 작업을 수행할 때, 편하게 이용할 수 있어요.

특히, 저는 반복작업을 할 때 유용하여 for 반복문, if 조건문을 많이 사용하고 있어요.

 

1. 기본 사용 방법

work.sh 파일을 만들어서 파일에 다음을 입력해주세요.

#!/bin/bash
echo "Hello, World!"

프로그래밍 언어를 처음 배울 때 한번쯤 해보는 Hello, World!를 화면에 출력하는 거예요.

리눅스 명령어 창에 echo "Hello, World!"를 입력하는 것과 같은 작업이예요.

파일 첫 줄에 #!/bin/bash는 시스템에 bash 스크립트를 사용한다는 것을 알려주는 줄이예요.

 

이제 명령어 창에서 파일을 실행시켜서 결과를 확인해 봐야죠!

$ bash work.sh

파일을 실행시키니 Hello, World! 가 출력되었네요.

 

※ 주석처리 #

#!/bin/bash
# echo "Hello, World!"
echo "Hello, Korea!" # 주석이예요~

주석 처리는 기호 #으로 두번째 줄 부터 할 수 있어요.

 

2. for 반복문 사용

스크립트파일의 기본 틀과 실행방법을 알았으니,

오늘의 목표인 for 반복문으로 바로 출발해봐요.

① for문 기본형태

#!/bin/bash
for i in 1 2 3 4 5
do
  touch test_${i}.txt
done

for 반복문 스크립트 파일을 실행시키니 비슷한 이름의 파일들이 생성되었네요.

지금 작성한 for 반복문은 변수 i에 숫자 1, 2, 3, 4, 5를 한번씩 넣어가며,

do 와 done 사이에 있는 명령어를 실행시키는 거예요.

따라서, bash 스크립트는 python과 달리 각각의 줄 맨 앞의 띄어쓰기가 실행에 영향을 미치지 않아요.

${i}는 i가 변수 라는 것을 알려줘요. 즉, ${i} 자리에 1, 2, 3, 4, 5가 들어가는 거죠.

 

한단계 나아가 볼까요?

② for문 사칙연산

#!/bin/bash
for j in `seq 1 5`
do
  let k=${j}+10
  touch test_${k}.txt
done

for 문에 `seq 1 5`를 넣었는데, 1~5 까지 1 간격으로 정수를 입력하는 거예요.

여기서 주의할 점은 작은따옴표(``)는 키보드에서 숫자 1 왼쪽에 있는 기호예요!!

`seq 1 2 10` 을 하면, 1~10까지 2 간격으로 정수를 입력하는 것으로 1, 3, 5, 7, 9가 돼요.

또한, let을 사용하여 연산을 통해 변수 k를 생성했어요.

연산을 할 때는 반드시 let을 입력해야 돼요!! 그렇지 않으면 문자로 인식해요.

또한, 등호(=) 앞뒤로 띄어쓰기를 하면 안돼요!!

 

③ for문 변수를 파일, 디렉토리 명으로

#!/bin/bash
for i in `ls *.txt`
do
  echo ${i}
done

변수 i에 현재 위치에 있는 *.txt파일을 입력해봤어요.

다들 다시는 것처럼 .txt로 끝나는 모든 파일 및 디렉토리를 변수 i에 대입하는거죠.

이렇게 하면 모든 파일에 같은 작업을 반복할 때 편해요.

 

#!/bin/bash
for i in `ls -d */`
do
  echo ${i}
done

디렉토리만을 변수로 가지고 올 수도 있어요.

이 방법은 디렉토리에 대한 작업이나 디렉토리 하위 파일들의 반복 작업을 편하게 해줘요.

 

 

3. if 조건문

오늘 소개할 마지막 내용은 if 조건문 이예요.

if 조건문을 사용하여 조건에 맞는 경우특정한 명령을 수행하도록 만들 수 있어요.

#!/bin/bash
let j=2
for i in `seq 1 3`
do
  if [ ${j} - gt ${i} ]
  then
    echo “Good”
  elif [ ${j} -eq ${i} ]
  then
    echo “same”
  else
    echo “bad”
fi
done

if, elif, else, then으로 구성되며 elif를 여러 번 입력할 수 있어요.

if문을 닫을 때는 fi라고 표기를 해줘야 해요.

조건 식에는

A -eq B : (equal) A와 B가 같으면
A -ne B : (not equal) A와 B가 같지 않으면
A -gt B : (greater than) A가 B보다 크면
A -ge B : (greater equal) A가 B보다 크거나 같으면
A -lt B : (lesser than) A가 B보다 작으면
A -le B : (lesser equal) A가 B보다 작거나 같으면

등이 있어요.

저는 영어 단어로 외웠어요. 외우기 쉽죠?

 

 

이번에는 bash 스크립트를 활용한 for반복문과 if 조건문에 대해 알아봤어요.

 

오늘도 즐거운 하루 되세요~~

반응형