seq 명령어는 연속된 숫자를 나열해 주는 명령어로 shell script 에서 for 루프등을 돌기 위한 조건을 만들 때 유용합니다.
n까지 나열
1 부터 n 까지 나열하려면 종료 숫자를 지정해 주면 됩니다.
$ seq 7
1
2
3
4
5
6
7
BASH
시작과 끝 지정
파라미터를 2개를 주면 첫 번째는 시작 숫자, 2번째는 종료 숫자로 처리하며 다음은 3부터 7까지 숫자를 나열합니다.
증분 지정
파라미터를 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
같이 보기