Specify command line arguments like name=value pairs for shell script

前端 未结 5 1160
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-10 07:38

Is it possible to pass command line arguments to shell script as name value pairs, something like

myscript action=build module=core

and th

5条回答
  •  渐次进展
    2020-12-10 08:17

    This worked for me:

    for ARGUMENT in "$@"
    do
    
        KEY=$(echo $ARGUMENT | cut -f1 -d=)
        VALUE=$(echo $ARGUMENT | cut -f2 -d=)   
    
        case "$KEY" in
                STEPS)              STEPS=${VALUE} ;;
                REPOSITORY_NAME)    REPOSITORY_NAME=${VALUE} ;;     
                *)   
        esac    
    
    
    done
    
    echo "STEPS = $STEPS"
    echo "REPOSITORY_NAME = $REPOSITORY_NAME"
    

    Usage

    bash my_scripts.sh  STEPS="ABC" REPOSITORY_NAME="stackexchange"
    

    Console result :

    STEPS = ABC
    REPOSITORY_NAME = stackexchange
    

    STEPS and REPOSITORY_NAME are ready to use in the script.

    It does not matter what order the arguments are in.

    HTH

提交回复
热议问题