Search code examples
bashshellcurlscriptinggetopts

Getopts with curl bash


I have got a question how to connect getopts with curl method in one function ? I am newbie in bash scripting. I will add my function below:

    addProject() {

        addProject_usage() { echo "addProject: [-p <arg>]" 1>&2; exit; }
        read OPTARG
        local OPTIND o p
        local OPTARG
        while getopts ":p:" o; do
            case "${o}" in
                p)
                    p="${OPTARG}"
                   ;;
                *)
                    addProject_usage
                ;;
            esac
        done
        shift $((OPTIND-1))


curl -H "Content-Type:application/json" http://adress.com/api/v3/projects?private_token=$token -d "{ \"name\": \"$p\" }"
}

addProject -p 
addProject

Thank you for any advice and help ! I dont know if i do it right but i don't think so .

M.


Solution

  • I think the script could be simplified a few:

    #!/bin/bash 
    #
    
    addProject_usage() { echo "addProject: [-p <arg>]" 1>&2; exit; }
    
    addProject() {
    
            local p
            p="myPdefault"
    
            while getopts ":p:" o; do
                case "${o}" in
                    p)
                        p="${OPTARG}"
                       ;;
                    *)
                        addProject_usage
                    ;;
                esac
            done
            shift $((OPTIND-1))
    
    
    curl -H "Content-Type:application/json" http://adress.com/api/v3/projects?private_token=$token -d "{ \"name\": \"$p\" }"
    }
    
    addProject -p foo 
    addProject