我使用户可以回答一些问题,以便我可以执行相应的cURL请求并相应地创建所需的内容。
通过这种方式:
〜functions.sh
lazy val myProjectRoot = project.in(file(".")).settings(...).dependsOn(otherProject)
该脚本由两个文件组成:
不幸的是,由于我来自前端背景,因此我对此很陌生,因此我不知道或无法在此处找到/实现以下目标:
我将需要根据用户答案之一发送一个cURL请求,这很容易做到,只需在function.sh函数之一中调用即{$ question1},然后在主流程中调用即可。将文件作为源文件之后...
不幸的是,当涉及到在一个单独的文件中填充多行环境配置,以便稍后在cURL中作为json发送时,它脱离了我的舒适范围...
Id需要如此发送一些东西
echo "Question number 1?"
read question1
echo "Question number 2?"
read question2
其中$ env是env.sh文件,json有效,并相应地填充了从用户输入之前读取的变量...
要解决多行json问题,也许我可以使用以下代码:
curl -X POST "https//api.url"
-H "headers"
--data '{"content":"'{$env}'"}'
对于如何填充用户读取的文件格式并在cURL中的json部分内回显它,我还是一无所知。
答案 0 :(得分:2)
您可以使用awk将正确的JSON数据直接保存到env.sh(部分取自Dr.K's answer to this other question):
echo "Question number 1?"
read question1
echo "Question number 2?"
read question2
echo "Question number 3?"
read question3
awk ' BEGIN { print "[" ; } \
{ print " {" \
print " \"Question1\" : \"" $question1 "\"," \
print " \"Question2\" : \"" $question2 "\"," \
print " \"Question3\" : \"" $question3 "\"" \
print " }" \
} \
END { print "]" } ' env.sh
然后这应该可以作为JSON正常工作
curl -X POST "https//api.url"
-H "headers"
--data '{"content":"{$env}"}'
,数据有效载荷应如下所示:
{
content: [
{
"Question1" : "User answer 1",
"Question2" : "User answer 2",
"Question3" : "User answer 3"
}
]
}
这是您的主意吗?
答案 1 :(得分:0)
对于任何在这里结束的人,我所做的是:
创建一个单独的文件,在其中设置变量,并在其中放置EOF。
env=$( cat <<EOF
multi
line
content
goes
here
EOF
)
export env
然后我通过jq生成一个有效的json
generate_json() {
newenv="$( jq -nc --arg str "$env" '{"content": $str}' )"
}
最后我立即在卷发中使用$ newenv:
example_curl() {
curl -X PUT "https://apiendpoint.co.uk" \
-H "Authorization: Bearer 123123" \
--data "${newenv}"
}