본문 바로가기

Server/Linux

[Linux] 쉘 스크립트 사용하기(반복문 for, while)

728x90
반응형
관련 포스팅

2024.07.13 - [Linux] - [Linux] 쉘 스크립트 사용하기(변수 선언, 조건문 IF) (1)

 

[Linux] 쉘 스크립트 사용하기(변수 선언, 조건문 IF) (1)

회사 업무 중 모듈 제작 작업 과정에서 반복된 커맨드를 작성하다 보니 그냥 스크립트 하나 만들어서 동작하는 게 효율적일 거란 생각이 들어서 생애 처음으로 쉘 스크립트를 작성해 보았다. 쉘

rlawo32.tistory.com

 

 

 

 

 

 

1. 반복문 for

기본적인 for문 선언 방법이다.

# test.sh

# 형식 => for 변수 in 범위 do 실행문 done
for a in {1..10}
do
	echo $a
done

# 이중괄호로 익숙한 형태의 반복문
for ((a=1; a<=10; a++))
do
	echo $a
done

 

 

1부터 10까지 순차적으로 출력이 된다. 

# /home/test

1
2
3
4
5
6
7
8
9
10

 

 

 

증가값 조정은 아래와 같이 작성하면 된다.

# test.sh

# 형식 => for 변수 in 범위 do 실행문 done
# 2씩 증가
for a in {1..10..2}
do
	echo $a
done

# 이중괄호로 익숙한 형태의 반복문
# 2씩 증가
for ((a=1; a<=10; a+=2))
do
	echo $a
done

 

 

1부터 2씩 증가가 돼서 출력이 되는 것을 확인할 수 있다.

# /home/test

1
3
5
7
9

 

 

 

배열을 이용한 반복문은 아래와 같다.

# test.sh

A=("A1" "A2" "A3" "A4")

for a in ${A[@]}
do
        echo $a
done

# 출력
A1
A2
A3
A4

 

 

 

for문 사용시 무한루프 정의 방법

# test.sh

for (( ; ; ))
do
	echo "Hello!!"
done

# 출력
Hello!!
Hello!!
...

 

 

 

한 줄로 for문을 정의하고 싶을 땐 아래와 같이 작성하면 된다.

# test.sh

# 형식 => for 변수 in 범위; do 실행문1; done
A=("A1" "A2" "A3" "A4")

for a in ${A[@]}; do echo $a; done

# 형식 => for ((범위)); do 실행문1; 실행문2; done
for ((a=1; a<=10; a+=2)); do echo $a; echo $[a+1]; done

# 출력
A1
A2
A3
A4
1
2
3
4
5
6
7
8
8
10

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

2. 반복문 while

기본적인 while문 선언 방법은 아래와 같다.
적절한 조건식을 넣고 while문을 작성해주어야 한다. 아니면 무한루프가 돼버릴 수도 있으니 주의

# test.sh

# 형식 => while [ 조건식 ] do 실행문 done
A=5

while [ $A -gt 0 ] # 변수A가 0보다 크면 반복
do
    echo $A
    A=$[A-1]
done

# 출력
5
4
3
2
1

 

 

 

while문 사용시 무한루프 정의 방법은 아래와 같다. 조건식 대신 ' : ' 을 선언해 주면 된다.
무한루프를 사용할 땐 꼭 break를 설정해주자

# test.sh

# 형식 => while : do 실행문 done
A=5

while :
do
        echo $A
        A=$((A-1))

        if [ $A -eq 0 ]; then # 변수A가 0이 되면 break
                break
        fi
done

# 출력
5
4
3
2
1

 

 

 

while문 역시 한줄로 정의하고자 한다면 ' ; ' 을 통해 구분하여 작성하면 된다.

# test.sh

# 형식 => while [ 조건식 ] do 실행문 done
A=5

while [ $A -gt 0 ]; do echo $A; A=$[A-1]; done

# 출력
5
4
3
2
1

 

 

 

 

 

 

 

 

 

728x90
반응형