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


n까지 나열

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

$ seq 7

1
2
3
4
5
6
7
BASH

시작과 끝 지정

파라미터를 2개를 주면 첫 번째는 시작 숫자, 2번째는 종료 숫자로 처리하며 다음은 3부터 7까지 숫자를 나열합니다.

$ seq 3 7

3
4
5
6
7
BASH


증분 지정

파라미터를 3개를 주면 첫 번째는 시작 숫자, 2번째는 증분, 3번째는 종료 숫자로 처리하며 다음은 1부터 10까지 숫자를 3씩 증가시켜서 나열합니다.

$ seq 1 3 10

1
4
7
10
BASH


구분자 지정

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

$ seq -s " " 1 3 10

1 4 7 10
BASH


사용예

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

아래는 1부터 10까지 루프를 돌면서 sleep 을 수행하며 sleep 시간은 1초씩 증가합니다.

#!/usr/bin/env bash

for i in $(seq -s " " 10);do 
	## 실행할 명령어
	echo "$i"; 
	sleep $i;
done
BASH


x초마다 명령어 실행

아래는 증분을 이용해서 5초마다 명령을 실행하며 1분이 되면 종료합니다.

#!/usr/bin/env bash

INCR=5

for i in $(seq -s " " 1 ${INCR} 60);do 
	## 실행할 명령어
	echo "${i} " $(date "+%Y-%m-%d %H:%M:%S"); 
	sleep ${INCR};
done
BASH


같이 보기