쉘 크스트립트에서 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
두 가지 방법 외에도 다양한 방법이 있다.
'리눅스 > Shell script' 카테고리의 다른 글
[Shell Script] 문자 / 배경 색상 변경하기 (0) | 2020.09.23 |
---|---|
Linux Shell Script 생성 및 실행 (0) | 2020.09.08 |