如何使用shell脚本将新配置文件附加到configtx.yaml文件?
我不熟悉shell脚本,并尝试探索相同的方法。要求如下。我需要编写一个脚本文件,从前端动态获取channelProfile名称,对于这个channelProfile,我必须在configtx.yaml文件的Profiles部分下附加现有的TwoOrgsChannel。我有configtx.yaml文件,其中profiles部分定义为:如何使用shell脚本将新配置文件附加到configtx.yaml文件?,yaml,hyperledger-fabric,yq,Yaml,Hyperledger Fabric,Yq,我不熟悉shell脚本,并尝试探索相同的方法。要求如下。我需要编写一个脚本文件,从前端动态获取channelProfile名称,对于这个channelProfile,我必须在configtx.yaml文件的Profiles部分下附加现有的TwoOrgsChannel。我有configtx.yaml文件,其中profiles部分定义为: Profiles: TwoOrgsChannel: Consortium
Profiles:
TwoOrgsChannel:
Consortium: SampleConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
当我运行这个文件时,我得到了这个错误
div@DESKTOP-0BSERCC:/mnt/c/Users/Div/Downloads/fabric-samples_3/first-network$ ./scriptFile.sh configtx.yaml FiveOrgsChannel
jq: error: FiveOrgsChannel/0 is not defined at <top-level>, line 1:
.Profiles += FiveOrgsChannel, Profiles.TwoOrgsChannel
jq: error: Profiles/0 is not defined at <top-level>, line 1:
.Profiles += FiveOrgsChannel, Profiles.TwoOrgsChannel
jq: 2 compile errors
div@DESKTOP-0BSERCC:/mnt/c/Users/Div/Downloads/fabric-samples\u 3/first network$。/scriptFile.sh configtx.yaml FiveOrgsChannel
jq:错误:未在第1行定义五个组织名称/0:
.Profiles+=FiveOrgsChannel,Profiles.TwoOrgsChannel
jq:错误:未在第1行定义配置文件/0:
.Profiles+=FiveOrgsChannel,Profiles.TwoOrgsChannel
jq:2个编译错误
如果将新的“FiveOrgsChannel”配置文件部分保存到名为“newProfile.txt”的文件中,您可以:
$cat newProfile.txt>>configtx.yaml
此命令将newProfile.txt的内容附加到configtx.yaml文件的末尾。对于这个特定用例,这应该是可以接受的,因为概要文件部分是configtx.yaml中的最后一部分
注意:您需要确保newProfile.txt包含configtx.yaml文件的正确缩进。(在上面列出的示例中,缩进似乎不正确-FiveOrgsChannel应该与TwoOrgsChannel处于相同的缩进级别。)您可以发布
yq--version
的输出吗?您不必转换为JSON并使用jq
修改值,然后作为YAML写回。使用mikefaraq/yq,您可以直接修改YAML。请查找版本-yq版本3.3.2您的问题不清楚,上一次编辑甚至使问题变得更糟。因为你是新的网站,你需要了解什么是一个好问题。1.需要一个你正在处理的精确输入2。准确的输出预期3。所有可变值(例如$1、$2)4。工具版本(如您更新的yq
)。看到和
export CONFIGTXFILE=$1
export CHANNELPROFILE=$2
yq r --prettyPrint -j $ CONFIGTXFILE > peer.json
jq --arg e "${CONFIGTXFILE}" ".Profiles += ${CHANNELPROFILE} Profiles.TwoOrgsChannel " peer.json > mypeer.json
yq r --prettyPrint mypeer.json > configtx.yaml
div@DESKTOP-0BSERCC:/mnt/c/Users/Div/Downloads/fabric-samples_3/first-network$ ./scriptFile.sh configtx.yaml FiveOrgsChannel
jq: error: FiveOrgsChannel/0 is not defined at <top-level>, line 1:
.Profiles += FiveOrgsChannel, Profiles.TwoOrgsChannel
jq: error: Profiles/0 is not defined at <top-level>, line 1:
.Profiles += FiveOrgsChannel, Profiles.TwoOrgsChannel
jq: 2 compile errors