【问题标题】:Bash : Split Array into KV pairsBash:将数组拆分为 KV 对
【发布时间】:2022-06-15 14:58:42
【问题描述】:

我正在编写一个脚本,我通过 JQ 获取环境变量,并且我需要它们以 KV 对的形式用于其他类型的文件。目前,我在 Bash 数组中有如下元素

DD_TRACE_CLI_ENABLED:true
PRODUCT:buy_box
TRACE_ID:$NOMAD_ALLOC_ID

现在,当我打印时,我需要这样:

- name: DD_TRACE_CLI_ENABLED
  value: true
- name: PRODUCT
  value: buy_box

我当前的代码

if [ ! -z "$env_params" -a "$env_params" != " " ]; then
env_params_as_array=(${env_params//,/ })
for each in "${env_params_as_array[@]}"
do
echo $each
echo -e "${myCustomIndentTab}- $each" >> values-$1.yaml
done
fi

我怎样才能做到这一点?谢谢。

【问题讨论】:

  • 您似乎想要生成 YAML。数据来自jq,为什么不使用yq
  • 如果您仍然使用jq,可能使用该工具以您想要的方式格式化输出。参见例如stackoverflow.com/a/68168384/874188

标签: bash shell


【解决方案1】:

bash 数组:

env_params_as_array=(
    DD_TRACE_CLI_ENABLED:true
    PRODUCT:buy_box
    TRACE_ID:"$NOMAD_ALLOC_ID"
)

按照您想要的方式打印:

for p in "${env_params_as_array[@]}"
do
    IFS=':' read -r k v <<< "$p"
    printf -- '%s- name: %s\n  value: %s\n' "$myCustomIndentTab" "$k" "$v"
done > "values-$1.yaml"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-26
    • 2013-08-07
    • 2021-10-09
    • 1970-01-01
    • 2018-11-13
    • 2018-05-01
    • 2016-01-27
    相关资源
    最近更新 更多