본문 바로가기
IT 지식정리/운영체제

[Linux shell script 10] 리눅스 쉘스크립트: 포지션(position parameter) 2015. 2. 13.

by G. Hong 2017. 11. 4.
728x90
반응형

리눅스의 쉘스크립트에서 포지션 파라미터를 사용하는 방법에 대해서 알아보도록 하겠습니다.


이번에는 포지션(positioin parameter)에 대해서 알아보겠습니다.

포지션은 쉽게 설명하면, 스크립트 실행시에 실행하는 "옵션"이라고 보시면 됩니다.


커맨드를 입력할 때, command -option1 -option2 와 같은 커맨드를 입력하였다면,

$0에는 command

$1에는 -option1

$2에는 -option2

이렇게 값들이 저장되게 됩니다.

아래와 같이 간단한 스크립트를 생성하여 확인할 수 있습니다.

$ cat t_position

#!/bin/bash


echo "Positional Parameters"

echo '$0 = ' $0

echo '$1 = ' $1

echo '$2 = ' $2

echo '$3 = ' $3


아래처럼 옵션이 없이 실행하게 되면 $0에만 값이 저장되게 됩니다.

$ ./t_position

Positional Parameters

$0 =  ./t_position

$1 =

$2 =

$3 =


아래와 같이 3개의 옵션을 적게 되면 $1~$3까지 포지션 파라메터가 생성됩니다.

$ ./t_position -a -b -help

Positional Parameters

$0 =  ./t_position

$1 =  -a

$2 =  -b

$3 =  -help


포지션 파라메터 중에 $#값에는 총 파라메터의 수가 입력되게 됩니다.

아래와 같이 echo '$# = ' $# 를 한줄 추가하여 확인해보았습니다.

$ cat t_position

#!/bin/bash


echo "Positional Parameters"

echo '$0 = ' $0

echo '$1 = ' $1

echo '$2 = ' $2

echo '$3 = ' $3

echo '$# = ' $#


$ ./t_position -a -b -help

Positional Parameters

$0 =  ./t_position

$1 =  -a

$2 =  -b

$3 =  -help

$# =  3


case를 활용하여 옵션이 사용되는 테스트용 스크립트를 한 번 생성해 보겠습니다.

$cat ./t_position

#!/bin/bash


usage(){

        echo 'usage : t_position [[-a] | [-b] | [-c]]'

}


echo -n 'the process is running with '


case $1 in

        "" )    echo 'no option'

                ;;

        -a )    echo 'option -a'

                ;;

        -b )    echo 'option -b'

                ;;

        -c )    echo 'option -c'

                ;;

        * )     usage

                exit 1

esac


아래와 같이 주어진 option에 따라 다른 출력을 확인 할 수 있습니다.

$./t_position

the process is running with no option

$./t_position -a

the process is running with option -a

$./t_position -b

the process is running with option -b

$./t_position -c

the process is running with option -c


usage를 보려고 실행시켰더니 아래처럼 결과가 나오네요..7번째 줄에 있는 echo부분을 없애고, 각각의 case에 적어주면 해결이 될 듯 합니다.

$./t_position a

 

the process is running with usage : t_position [[-a] | [-b] | [-c]]

728x90
반응형