我是 shell 脚本的新手,并试图探索同样的东西。要求如下。我需要编写一个脚本文件,从前端动态获取 channelProfile 名称,对于这个 channelProfile,我必须在 configtx.yaml 文件的 Profiles 部分下附加现有的 TwoOrgsChannel。我有 configtx.yaml 文件,其中配置文件部分定义为:
Profiles:
TwoOrgsChannel:
Consortium: SampleConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
注意:*ChannelDefaults、*ApplicationDefaults、*ApplicationCapabilities 定义在同一个文件(configtx.yaml)中。
输出应如下所示:
Profiles:
TwoOrgsChannel:
Consortium: SampleConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
FiveOrgsChannel:
Consortium: SampleConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
这是我试图实现但无法生成预期输出的代码。
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