본문 바로가기
CS/Shell scripts

[Bash] Bash 스크립트에서 argument로 Option 을 처리 하는 방법

by Warehaus 2021. 7. 8.

업무를 하다보면 여러가지 스크립트를 만들 일이 생긴다.

나는 매번 만드는데도 ... 자꾸만 이것저것 찾아보고 만들게 되는데

내가 필요한 부분만 정리해 두면 그러지 않아도 될 것 같아서 가볍게 argument / option 을 처리할 수 있는 script를 만들어 보려고 한다.

 

우선 bash script 파일 하나를 만들고 실행 권한을 줬다.

vim 210707.sh
chmod 775 210707.sh

 

shebang 을 bash로 적고 argument를 받는 코드를 아래와 같이 작성해서 출력 해 보았다.

#!/usr/bin/bash

echo $@

# 저장 후 실행
./210707.sh 1 2 3 4 5
1 2 3 4 5

 

$@ 를 이용해서 실행파일 뒤에 따라오는 argument를 출력해 주는 방법은 알았다.

이제 그 argument를 처리해서 옵션을 받는 스크립트로 만들어 보자

#!/usr/bin/bash

item_index=0

for i in `echo $@`
do
        item_index=`expr $item_index + 1`

        if [ "$i" == "-v" ]
        then
                item_index=`expr $item_index + 1`
                echo ${!item_index}
        fi

done

# 실행
/210707.sh -v 7
7

-v 옵션을 줬을때 옵션 값을 출력하는 스크립트를 만들어 봤고, index 를 증가시키는 방법을 이용한 출력을 이용했다.

뭐.. 이렇게 해서 되는 부분도 있는데 사실 굳이 indexing 을 하지 않아도 아래처럼 처리가 가능하다.

#!/usr/bin/bash

while [ -n "$1" ]
do
        arg="$1"

        if [ "$arg" == "-v" ]
        then
                shift
                echo $1
        fi

        shift
done

# 실행
/210707.sh -v 7
7

shift는 argument 하나를 이동시켜주는 명령어로 원하는 option 값을 만나면 argument를 하나 이동해서 원하는 값에 접근이 가능하다.