관리 메뉴

IT창고

쉘 스크립트 for문 본문

프로그래밍/Shell Script

쉘 스크립트 for문

방구석여포 2020. 11. 3. 23:43

이번에는 쉘 스크립트에서 반복하여 작업할 때 쓰이는 for문에 대해 알아보도록 하겠습니다.

bash쉘에서 반복되는 루프를 만들수있는 구문은 아래와 예시와 같습니다

 

for 변수 in 값
do 
  반복할 구문
done

위의 값에 매개변수에는 반복에 사용될 값을 넣어주며 값은 값1, 값2, 값3.... 혹은 다른 변수에 list값을 넣어주면 됩니다.

반복이 실행될때는 변수는 첫 반복시 값1을 사용한 후 두번째 반복 시 값2를 사용하며 반복이 실행됩니다.

 

이론보다는 실습으로 확인하면 더 쉽게 알수있으니 바로 간단한 for문의 사용을 확인해보도록 하겠습니다.

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!/bin/bash 
#for 1

for gsk in 1 2 3 4 kwon abc
do
  echo "입력된 값 출력:"$gsk

done

단순하게 값에 적당한 입력값을 넣어 echo명령어로 출력하는 스크립트 입니다. 
gsk라는 변수에 for문 값들이 출력된걸 확인할 수 있습니다.

#!/bin/bash 
#for 1

list="1 2 3 4 kwon abc"                        #1번 방법

#echo "값을 입력하세요 ex)1 2 3 kwon abc"       #2번 방법
#read list

for gsk in $list
do
  echo "입력된 값 출력:"$gsk

done

 

위의 스크립트는 위의 사진에 있는 결과와 같으며 list변수에 값을 미리 넣어 출력하는 스크립트 입니다.

2번 방법으로 직접 입력하는 방법도 있으며 방법은 사용하기 나름입니다.

 

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!/bin/bash
#for 2

gsk_num=7

for n in {1..12}
do
  let num=$gsk_num*n
  echo "$gsk_num * $n = $num"

done

gsk_num 변수에 7를 넣어 구구단 형식으로 반복문을 실행하였습니다. 값에 구간 시작점과 구간 끝을 사용하는 점만 추가되었으며 연산으로 반복문을 실행했다는 점이 처음의 쉘 스크립트와의 다른 점입니다.

#!/bin/bash
#for 2

gsk_num=7

for (( n=1; n<=12; n++ ))
do
  let num=$gsk_num*n
  echo "$gsk_num * $n = $num"

done

 

또한 for문을 C언어 스타일대로 사용이 가능합니다. 위의 스크립트는 C언어 스타일로 쉘 스크립트를 작성한것이며 결과는 두번쨰 사진과 같습니다. 추가로 (a=1 b=2; a<=10; a++ b--)와 같은 다양한 변수 사용도 가능합니다

 

마지막으로 for문에 if문을 사용해보도록 하겠습니다.

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!/bin/bash
#for 3

test_gsk1=`cat /etc/passwd | awk -F ":" '{print $1}'`
test_gsk2="httpd mysql"

echo "찾을 계정 입력 ex) zabbix "
read text
#clear

for gsk1 in $test_gsk1
do
    if [ $gsk1 = $text ]; then
      echo "$text 계정은 존재합니다!"
      check=1
      break
    else
      check=0
    fi
done

if [ $check -gt 0 ]; then
  exit 0
else

  for gsk2 in $test_gsk2
  do
    ps -ef | grep -v grep | grep $gsk2

  done

fi
echo ""
echo "찾는 계정이 없으므로 대신 귀여운 apache, mysql 프로세스 찾아드렸습니다!"

 

최대한 다양한 구문을 넣을 수 있도록 생각나는대로 만들어 보았습니다. 

대충 만들고나니 뭔가 조잡하긴 한데 공부에는 도움이 될거라 믿습니다.

 

위의 쉘 스크립트를 설명하면 test_gsk1 변수에 /etc/passwd 파일내에 계정명을 확인하는 명령어로 첫번째 for문에서 입력값에서 받은 text변수와 문자를 비교하며 같은 문자를 찾으면 break로 for문 루프를 빠져나오고 다음 if문에 조건을 만족하여 exit 0로 쉘 스크립트가 종료 됩니다. 만약 일치하는 문자를 찾지 못할 경우 다음 if문에서 프로세스를 찾아보며 if문이 끝나고 마지막에 echo문을 출력하게 됩니다. 

 

그 외에도 for문을 다양한 방식으로 사용이 가능하며 어떤 목적의 쉘 스크립트를 제작함에 따라서 사용이 됩니다.

'프로그래밍 > Shell Script' 카테고리의 다른 글

쉘 스크립트 while문  (0) 2020.11.05
쉘 스크립트 if문 3  (0) 2020.10.19
쉘 스크립트 if문 2  (0) 2020.10.17
쉘 스크립트 if문 1  (0) 2020.10.10
쉘 스크립트 기초 2  (0) 2020.10.07
Comments