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

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>
...

관련 글

지식 공유3분 읽기

[Linux] Ubuntu 24.04 -> Rocky 10 마이그레이션

개요 기존 홈서버에서 운영 중인 Ubuntu 24.04 서버의 모든 서비스( Docker , Gatsby , 데이터 등등)를 새로운 Rocky 서버로 누락 없이 이관하기 위한 과정을 기록해보려고 합니다. 사전 준비 작업 전에, 양쪽...

리눅스
지식 공유3분 읽기

[Linux] 테스트 서버 디스크 장애 이슈

개요 OS : Rocky 8.10 디스크 구성 /dev/sda : 메인 디스크 /dev/sdb : 백업 디스크 상황 평소에 서버 로그에 READ sda .... , swap 관련 메시지가 간간히 보였음. 어느 날 I/O 관련 로그가...

리눅스
지식 공유1분 읽기

[Linux] SSH Keygen으로 원격 접속 키 생성하기

SSH Key 인증? SSH Key 인증은 비대칭 암호화라는 방식을 사용합니다. 한 쌍의 키(Key Pair)를 생성하여 하나는 내가 가지고 있고(개인 키, Private Key), 하나는 서버에 등록(공개 키, Public Key)...

리눅스