带有curl bash的Getopts
我有一个问题,如何在一个函数中连接getopts和curl方法?我是bash脚本的新手。我将在下面添加我的函数:带有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
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]