【发布时间】:2021-06-26 13:22:42
【问题描述】:
我正在尝试使用以下代码将“fromRef”和“toRef”中的 slug 条目从 dummyrepo1 替换为 dummyrepo2
#!/bin/bash
function template {
cat << EOF
{
"title": "test comment"
"description: "testing"
"fromRef": {
"id": "refs/heads/testbranch"
"repository" : {
"slug": "dummyrepo1"
"project": {
"key": "TEST"
}
}
},
"toRef":{
"id": "refs/heads/master"
"repository" : {
"slug" : "dummyrepo1"
"project": {
"key": "TEST"
}
}
}
}
EOF
}
function modify_json() {
template |
jq --arg update_slug "${1}" \
'.fromRef.repository
|= (.slug |= $update_slug) |
.toRef.repository
|= (.slug |= $update_slug)
'
}
updated_JSON=$modify_json dummyrepo2)
echo "$updated_JSON"
我期待输出为
{
"title": "test comment"
"description: "testing"
"fromRef": {
"id": "refs/heads/testbranch"
"repository" : {
"slug": "dummyrepo2"
"project": {
"key": "TEST"
}
}
},
"toRef":{
"id": "refs/heads/master"
"repository" : {
"slug" : "dummyrepo2"
"project": {
"key": "TEST"
}
}
}
}
但是得到这样的输出,我可以知道我在哪里做错了
{
"title": "test comment"
"description: "testing"
"fromRef": {
"id": "refs/heads/testbranch"
"repository" : {
"slug": "dummyrepo2"
"project": {
"key": "TEST"
}
}
},
"toRef":{
"id": "refs/heads/master"
"repository" : {
"slug" : "dummyrepo1"
"project": {
"key": "TEST"
}
}
},
"toRef":{
"repository" : {
"slug" : "dummyrepo2"
}
}
}
意思是,脚本不是替换 toRef 中的“dummyrepo2”,而是修改输出中的新条目
【问题讨论】:
-
这些都不是有效的 json
-
但是我可以使用 > 中的内容通过 API 提高 bitbucket 中的 PR。但我正在尝试为多个回购自动化它,同时这样做面临这样的问题
-
jq 基本上是用于生成 JSON,您想要的输出不是 JSON。你甚至没有说它是什么格式。