커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 프로그래밍 / 개발 > 쉘 프로그래밍(shell script, 셀) 도움말
검색 : 사이트 WHOIS 웹서버 종류


  bash에서 순차적 숫자를 사용하는 쉬운 방법 작성일 : 2012/05/29 18:22
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 14373
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : bash에서 순차적 숫자를 사용하는 쉬운 방법
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2012.5.14(월)



    1. seq 명령

    GNU의 coreutils패키지에는 seq명령(리눅스에 기본 설치, FreeBSD는 /usr/ports/sysutils/coreutils 포트를 설치하면 gseq명령으로 설치됨)이 있다. seq는 숫자를 순차적으로 출력해주는 명령이다.
    예를 들어 1부터 5까지, 또는 1부터 10까지 2씩 증가하여 출력하고 싶다면 seq사용하면 된다.

     
    $ seq 1 5
    1
    2
    3
    4
    5
    $ seq 1 2 10
    1
    3
    5
    7
    9
     


    bash 쉘스크립트의 for문에서 seq명령을 사용한 예이다. 1부터 31까지 순차적으로 출력된다.

     
    #!/bin/bash

    for i in `seq 1 31`
    do
        echo $i
    done
     


    2. bash에서 순차적 숫자(sequential numbers)

    bash 3.0이상 부터는 loop에 순차적 숫자를 사용할 수 있다. 아래는 seq를 썼을 때와 같은 결과가 나온다.

     
    #!/bin/bash

    for i in {1..5}
    do
        echo $i
    done
     


    [ 결과 ]
     
    1
    2
    3
    4
    5
     


    bash 4.0이상 부터는 증가치(increment)를 지정할 수 있다.

     
    $ echo {1..10}
    1 2 3 4 5 6 7 8 9 10
    $ echo {1..10..2}
    1 3 5 7 9
     


    3. seq명령과 bash 순차적 표현의 각각의 장점

    seq 명령을 사용할 때 장점

    1) 실수형으로 증가할 수 있다.

     
    $ seq 1 .1 10
    1.0
    1.1
    1.2
    1.3
    1.4
    1.5
    1.6
    ... 생략 ...
     


    2) 구분문자를 지정할 수 있다. 기본은 줄바꿈

     
    $ seq -s " + " 1 10
    1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
     


    bash에서 순차적 숫자를 쓸 때 장점

    1) {01..10} 처럼 지정하면 01 02 03 처럼 앞에 0을 붙여준다. 0001처럼 지정할 수도 있다. (bash 4.0 부터)

     
    $ echo {01..10}
    01 02 03 04 05 06 07 08 09 10
    $ echo {0001..10}
    0001 0002 0003 0004 0005 0006 0007 0008 0009 0010
     


    2) 문자도 순차적으로 출력할 수 있다. {a..z} 나 {A..Z} 처럼

     
    $ echo {a..z}
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    $ echo {a..z..2}
    a c e g i k m o q s u w y
     
      커피닉스 카페 최근 글
    [11/06] World News Digest:
    [06/16] [질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
    [04/22] Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
    [05/16] (주)후이즈 시스템엔지니어 (경력자) 모집
    [02/15] [AWS] Cloudfront edge 확인하기
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~