bash argpaser 튜로리얼

December 1, 2020    bash

bash argpaser 튜로리얼

  • bash 파일에 arg(입력인자)를 받기 위해서 함수를 새로 정의해 줘야 한다.
  • 아래의 내용들은 특정 숫자(stage)가 기준숫자(target)보다 작은지(-le) 확인하는 예제이다.
    • 예제의 구조는 run.sh에서 test.sh를 인자를 함께 받아 수행된다.
  • run.sh
stage=3
target=5

sh test.sh --stage ${stage} --target ${target} 
  • test.sh
# error code
usage()
{
cat << EOF
usage: bash ./run.sh --stage ${target} --target ${target}
-s    | --stage                  
-t    | --target        
-h    | --help                             
EOF
}


# default args
# 사전에 기본인자값을 설정하고 싶은면 해당 순서에 기입한다.
# args에 인자값이 부여되면 해당 변경 값으로 설정된다.
target=0


# loop args($1)
while [ "$1" != "" ]; do
    case $1 in
        -s | --stage )
            shift
            stage=$1
        ;;
        -t | --target )
            shift
            target=$1
        ;;              
        -h | --help )    usage
            exit
        ;;
        * )              usage
            exit 1
    esac
    shift
done

# check args
if [ -z $stage ] || [ -z $target ]; then
    echo "stage or target is required"
    exit
fi



echo "stage: $stage"
echo "target: $target"


if [ $stage -le $target ]
then
    echo $stage" is less than $target"
else
    echo $stage" is more than $target"
fi

echo "Done my_test!!"


DSBA