Profile picture

[Linux] 연속된 숫자 나열 - seq

JaehyoJJAng2023년 06월 04일

seq

seq 명령어는 연속된 숫자를 나열해 주는 명령어로 shell script에서 for 루프 등을 돌기 위한 조건을 만들 때 매우 유용하다.


n까지 나열

1부터 n까지 나열하려면 종료 숫자를 지정해 주면 된다.

$ seq 7
1
2
3
4
5
6
7

시작과 끝 지정

파라미터 2개를 주면 첫 번째는 시작 숫자, 두 번째는 종료 숫자로 처리한다. 아래 예제는 5부터 10까지 숫자를 나열하는 예제이다.

$ seq 5 10
5
6
7
8
9
10

증분 지정

파라미터 2개를 주면 첫 번째는 시작 숫자, 두 번째는 증분, 세 번째는 종료 숫자로 처리한다. 아래 예제는 5부터 10까지 숫자를 5씩 증가시켜 나열한다.

$ seq 1 5 10
1
6

구분자 지정

기본 구분자는 new line이다. 이럴 경우 seq의 결과를 for loop에서 사용하기가 어려워 진다. 이럴 때는 구분자를 지정하는 옵션인 -s 옵션을 사용하여 공백을 구분자로 지정해주면 된다.

$ seq -s " " 1 5 10
1 6

예제

정해진 횟수만큼 명령어 실행

아래 예제는 1부터 20까지 루프를 돌며 echo문을 사용하는 예제이다.

#!/usr/bin/bash

for i in $(seq -s " " 10)
do
  echo "${i}"
  sleep 1
done

x초마다 명령 실행

해당 예시는 증분을 이용하여 2초마다 명령을 실행하며 30초가 되면 종료한다.

#!/usr/bin/bash

INCR=2

for i in $(seq -s " " 1 ${INCR} 30)
do
  echo "${i}";
  sleep ${INCR};
done

위와 비슷한 예시로, 172.16.103.132에서 돌아가는 웹 페이지를 n초마다 한 번씩 요청하는 스크립트를 작성해보자. curl에서 요청한 값만 받도록 --silent 요청을 추가한다.

$ for i in $(seq 1 20); do sleep ${i}; echo "${i} - $(curl --silent 172.16.221.155 | grep title)"; done
1 - <title>Welcome to nginx!</title>
2 - <title>Welcome to nginx!</title>
3 - <title>Welcome to nginx!</title>
4 - <title>Welcome to nginx!</title>
5 - <title>Welcome to nginx!</title>
6 - <title>Welcome to nginx!</title>
7 - <title>Welcome to nginx!</title>
8 - <title>Welcome to nginx!</title>
9 - <title>Welcome to nginx!</title>
...

Loading script...