【问题标题】:Getopts with curl bash带有 curl bash 的 Getopts
【发布时间】:2015-10-25 07:34:02
【问题描述】:

我有一个问题,如何在一个函数中将 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

感谢您的任何建议和帮助!我不知道我做得对不对,但我不这么认为。

M.

【问题讨论】:

    标签: bash shell curl scripting getopts


    【解决方案1】:

    我认为脚本可以简化一些:

    #!/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
    

    【讨论】:

    • 感谢 pasaba 的快速答复!将 p 设为动态变量怎么样?我编辑了 p="myPdefault" 行来读取 p ,当我想创建一个新项目时,我写: ./nameofscript.sh -p (应该有 $p 的名称,但它不起作用)。我必须按回车,然后在空白行中写下项目名称,它看起来像:./nameofscript.sh -p (按回车) nameofNewProject [添加新项目等] [root@root]: ...跨度>
    • @adamos: p="myPdefault" 是在未提供“-p”选项的情况下将采用的值(根据您的使用规范,-p 是可选的)。你甚至可以删除这一行。在这种情况下,如果未提供 -p,则 curl 查询中的 json 将为 {"name": "" }。
    • @pasaba_por_aqui:好吧,我明白了,但是当我删除选项变量 pi 的意思是:删除行:p="myPdefault" 并想运行脚本:./myscriptname.sh -p blabla 我得到了输出:添加项目:[-p ]
    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 2017-07-14
    • 2012-10-24
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多