반응형
[shell script] 쉘 스크립트 기초 #6 - 반복문 for문 개념 및 사용법
※목차
1. 쉘 스크립트 반복문 for문 개념
2. 쉘 스크립트 반복문 for문 사용법 및 예제
반응형
1. 쉘 스크립트 반복문 for문 개념
형식
for 반복문은 위 형식과 같이 변수에 각각의 값이 들어가 do 안에 있는 반복할 문장을 실행 합니다.
값의 개수 만큼 for문이 반복적으로 실행이 됩니다.
for 변수 in 값1 값2 값3 값4 ...
do
반복할 문장
done
작동원리
값1,2,3이 각각 숫자 1, 2, 3이라고 가정하에 동작 순서는 아래와 같습니다
1. 숫자 1이 AA의 변수에 들어가 반복할 문장에 $AA가 1로 바뀌어
'This is number 1' 을 출력하고 1의 반복을 종료합니다.
2. 숫자 2가 AA의 변수에 들어가 반복할 문장에 $AA가 2로 바뀌어
'This is number 2' 을 출력하고 2의 반복을 종료 합니다.
3. 숫자 3이 AA의 변수에 들어가 반복할 문장에 $AA가 3으로 바뀌어
'This is number 3' 을 출력하고 3의 반복을 종료하고 반복할 값이 없기
때문에 for문을 종료합니다.
실제 예시
user@server # cat apple.sh
#!/bin/bash
for AA in 1 2 3
do
echo "This is number $AA"
done
user@server # ./apple.sh
This is number 1
This is number 2
This is number 3
user@server #
2. 쉘 스크립트 반복문 for문 사용법 및 예제
쉘 스크립트에서 for문을 자주 사용하는 예시와 사용법을 소개하겠습니다
값 증가 시키기
seq 명령어를 이용하여 일정 값 증가시키기
- for문의 반복할 값은 역따옴표(`)로 묶어주며 seq 명령어 사용하고 -w 옵션으로 001 부터 100 까지
자리수를 맞춰 출력합니다. - 001부터 100까지 출력 줄이 많기 때문에 ...으로 생락하였습니다.
user@server # cat -n script.sh
1 #!/bin/bash
2
3 for AA in `seq -w 1 100`
4 do
5 echo "$AA"
6 done
7
user@server # ./script.sh
001
002
...
100
이중괄호를 사용한 값 증가시키기
- 이중괄호 안의 a값은 0부터 시작하며 10보다는 작고 a값을 증가시키는 for문 입니다.
user@server # cat -n script.sh
1 #!/bin/bash
2
3 for ((a=0; a<10; a++))
4 do
5 echo "$a"
6 done
7
user@server # ./script.sh
0
1
2
3
4
5
6
7
8
9
변수를 활용하여 반복한 값끼리 더하여 값 증가시키기
- 반복할 숫자 만큼 값을 서로 더하여 값을 계산합니다
- NUM 변수는 0으로 선언하여 0부터 시작합니다.
- for문이 다 반복한 후 echo 명령어로 합산된 NUM 변수의 값을 출력합니다.
user@server # cat -n script.sh
1 #!/bin/bash
2
3 NUM=0
4
5 for AA in 1 2 3 4 5
6 do
7 NUM=$((NUM+AA))
8 done
9
10 echo $NUM
11
user@server # ./script.sh
15
300x250
원하는 파일 목록 반복하기
- 특정 파일명 혹은 파일 전체에 대한 반복 작업을 할 경우에 사용합니다.
user@server # ls /var/log
anaconda grubby messages-20220414 messages-20220424 messages-20220504 security
audit grubby_prune_debug messages-20220415 messages-20220425 messages-20220505 spooler
boot httpd messages-20220416 messages-20220426 messages-20220506 syslog
boot.log lastlog messages-20220417 messages-20220427 messages-20220507 tallylog
boot.log-20211104 maillog messages-20220418 messages-20220428 messages-20220508 tuned
btmp messages messages-20220419 messages-20220429 messages-20220509 wtmp
btmp-20220501 messages-20220410 messages-20220420 messages-20220430 messages-20220510 yum.log
dmesg messages-20220411 messages-20220421 messages-20220501 mysqld.log yum.log-20220101
dmesg.old messages-20220412 messages-20220422 messages-20220502 ntpstats
firewalld messages-20220413 messages-20220423 messages-20220503 rhsm
- /var/log에 있는 로그들 중 messages 로그파일에 대한 작업 만 하고 싶을때
명령을 for문에 반복할 값에 넣어 줍니다. - messages 단어를 text로 바꿔주는 for문 반복문 입니다.
user@server # cat -n script.sh
1 #!/bin/bash
2
3
4 for AA in `ls /var/log | grep messages`
5 do
6 echo "$AA" | sed 's/messages/text/g'
7 done
8
9
swhong@xcat # ./script.sh
text
text-20220410
text-20220411
text-20220412
....
text-20220510
배열을 사용한 for문 반복문
- for문을 사용하여 배열을 함께 사용 할 수 있습니다.
- seq 명령을 이용하여 01 부터 10까지 출력한 값을 반복값에 두고 01부터 10까지 값에
'x'라는 텍스트를 붙여 배열에 저장하고 for문이 끝나면 배열을 한번에 출력합니다.
user@server # cat -n test.sh
1 #!/bin/bash
2
3 DIR=`seq -w 01 10`
4 LIST=()
5
6 for AA in `echo "$DIR"`
7 do
8 LIST+=("$AA" x)
9
10 done
11 echo "${LIST[@]}"
12
user@server # ./test.sh
01 x 02 x 03 x 04 x 05 x 06 x 07 x 08 x 09 x 10 x
for문에 if문을 활용하여 짝수 홀수 구분하기
- for문에 if문을 활용하여 짝수 홀수 구분하는 반복문 입니다.
- 2로 나누어 나머지가 1인지 0인지를 계산하여 if로 구분합니다.
user@server # cat -n test.sh
1 #!/bin/bash
2
3
4 for AA in 1 2 3 4 5 6 7 8 9 10
5 do
6 DATA=`expr $AA % 2`
7
8 if [ $DATA -eq 0 ]; then
9 echo "$AA is even"
10 else
11 echo "$AA is odd"
12 fi
13
14 done
15
user@server # ./test.sh
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
반응형
그리드형
'IT > 리눅스 쉘 스크립트' 카테고리의 다른 글
[shell script] 쉘 스크립트 기초 #8 - 제어문 select문 설명 및 예제 (43) | 2022.06.16 |
---|---|
[shell script] 쉘 스크립트 기초 #7 - 제어문 case문 설명 및 예제 (36) | 2022.06.12 |
[shell script] 쉘 스크립트 기초 #5 - 조건문 if문 옵션 사용법 및 총정리 (0) | 2022.04.27 |
[shell script] 쉘 스크립트 기초 #4 - 조건문 if문 개념 규칙 및 문법 (0) | 2022.04.26 |
[shell script] 쉘 스크립트 기초#3, 기초 예제 - 변수 사용 예제 (1) | 2022.04.18 |
댓글