728x90
반응형

쉘 크스트립트에서 1 ~ 100 까지의 숫자 중 짝수 또는 홀수 출력해보기

정말 단순하게 쉘 스크립트를 작성한다고 했을 때 이렇게 작성할 수 있다.

# 홀수 구하기
for num in $(seq 1 100)
do
    let r=$num%2
    if [ $r != 0 ]; then
        echo $num
    fi
done

# 짝수 구하기
for num in $(seq 1 100)
do
    let r=$num%2
    if [ $r == 0 ]; then
        echo $num
    fi
done

let 연산자를 사용해서 나머지 값(r) 을 구하고
나머지 값(r) 을 통해 0인지 아닌지 비교해서 짝수인지 (r==0) 홀수인지 (r!=0) 구분하면 된다.
하지만 쉘 스크립트를 작성해 본 사람이라면 이런 방법이 비효율적이라는 것을 알 수 있다.

쉘 스크립트에서 더 쉽게 구할 수 있는 여러가지 방법이 있다.

첫 번째, 중괄호 { } 활용하기

쉘 스크립트에서는 이렇게 중괄호 { } 를 통해 숫자를 증가시키거나 감소시킬 수 있다.

{시작..종료}

 

시작값과 종료값 사이에 .. 을 넣어주게 되면 시작값부터 종료값까지 순차적으로 실행된다.

{시작..종료..증감}

마지막에 .. 하고 증감값을 넣어주게 되면 증감값 만큼 증가하거나 감소하게 된다.

따라서, 중괄호 { } 를 통해 짝수 또는 홀수 값을 구할 수 있다.

# 홀수 구하기
for num in {1..100..2}
do
    echo $num
done

# 짝수 구하기
for num in {2..100..2}
do
    echo $num
done

 

두 번째, seq 활용하기

seq 명령어를 활용하는 방법은 중괄호를 활용하는 방법과 비슷하다.
seq 명령어는 다음과 같이 사용할 수 있다.

seq 시작 증감 종료

하지만 이 명령어를 그대로 for 문에서 사용하게 되면 명령어 자체가 입력값이 되어 들어가게 된다.

for num in seq 1 2 100
do
    echo $num
done

=== 출력 결과 ===
seq
1
2
100

따라서, 명령어의 결과값을 가져오기 위해서는 ` ` 를 사용하거나 $( ) 를 사용해서 결과값을 가져와야 한다.

# ` ` 를 사용한 경우
for num in `seq 1 2 100`
do
    echo $num
done

# $( ) 를 사용한 경우
for num in $(seq 1 2 100)
do
    echo $num
done

이렇게 해주어야 원하는 값을 가져올 수 있다.

따라서 seq 명령어를 통해 1~100 까지 숫자 중 짝수 또는 홀수 값을 가져오려면 이렇게 사용할 수 있다.

# 홀수값 출력
for num in `seq 1 2 100`
do
    echo $num
done

# 짝수 값 출력
for num in `seq 2 2 100`
do
    echo $num
done

 

두 가지 방법 외에도 다양한 방법이 있다.

728x90
반응형

'리눅스 > Shell script' 카테고리의 다른 글

[Shell Script] 문자 / 배경 색상 변경하기  (0) 2020.09.23
Linux Shell Script 생성 및 실행  (0) 2020.09.08
복사했습니다!