带有curl bash的Getopts

带有curl bash的Getopts,bash,shell,curl,scripting,getopts,Bash,Shell,Curl,Scripting,Getopts,我有一个问题,如何在一个函数中连接getopts和curl方法?我是bash脚本的新手。我将在下面添加我的函数: addProject() { addProject_usage() { echo "addProject: [-p <arg>]" 1>&2; exit; } read OPTARG local OPTIND o p local OPTARG while getopts

我有一个问题,如何在一个函数中连接getopts和curl方法?我是bash脚本的新手。我将在下面添加我的函数:

    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
addProject(){
addProject_用法(){echo“addProject:[-p]”1>&2;exit;}
阅读OPTARG
本地期权
本地OPTARG
而getopts“:p:“o;do
中的大小写“${o}”
(p)
p=“${OPTARG}”
;;
*)
addProject\u用法
;;
以撒
完成
班次$((可选ND-1))
curl-H“内容类型:应用程序/json”http://adress.com/api/v3/projects?private_token=$token-d“{\'name\\:\”$p\“}”
}
addProject-p
添加项目
谢谢你的建议和帮助!我不知道我是否做对了,但我不这么认为


M.

我认为脚本可以简化几步:

#!/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
#/bin/bash
#
addProject_用法(){echo“addProject:[-p]”1>&2;exit;}
addProject(){
局部p
p=“myPdefault”
而getopts“:p:“o;do
中的大小写“${o}”
(p)
p=“${OPTARG}”
;;
*)
addProject\u用法
;;
以撒
完成
班次$((可选ND-1))
curl-H“内容类型:应用程序/json”http://adress.com/api/v3/projects?private_token=$token-d“{\'name\\:\”$p\“}”
}
addProject-p foo
添加项目

感谢帕萨巴的快速回答!把p作为动态变量怎么样?我编辑了行p=“myPdefault”以读取p,当我想要创建一个新项目时,我会写:./nameofscript.sh-p(应该有$p的名称,但它不起作用)。我必须按enter键,然后在空白行中写下项目名称,它看起来像:./nameofscript.sh-p(按enter键)nameofNewProject[添加了新项目等][root@root]:…@adamos:p=“myPdefault”是未提供“-p”选项时将采用的值(根据您的使用规范,-p是可选的)。你甚至可以删除这一行。在这种情况下,如果没有提供-p,curl查询中的json将是{“name”:“}@pasaba_por_aqui:Okey我得到了它,但当我删除选项变量p时,我的意思是:delete line:p=“myPdefault”,并希望运行脚本:./myscriptname.sh-p blablablablabla我得到了输出:addProject:[-p]