【发布时间】:2021-08-24 01:58:08
【问题描述】:
我有一个命令生成一个秘密文件,其中包含多个由--- 分隔的yaml 文档,类似于以下输出:
## THE COMMAND THAT RUNS
kubectl kustomize .
## SENDS THE FOLLOWING TO STDOUT
data:
firebase-dev-credentials.json: |
MY_BASE_64_CREDENTIALS
kind: Secret
metadata:
name: nodejs-firebase-credentials-989t6dg7m2
type: Opaque
---
apiVersion: v1
data:
AGENDA_DATABASE_URL: |
MY_BASE_64_URL
kind: Secret
metadata:
name: nodejs-secrets-c229fkh579
type: Opaque
现在,我必须将yaml 文档传送到另一个命令进行处理,例如:
kubectl kustomize . | kubeseal
但是,kubeseal 命令不接受多文档yaml。所以我想我需要将yaml 拆分为--- 并将每个单独的文档发送到kubeseal 命令?
使用bash,完成此任务的首选方法是什么?
例如,我想我不能做这样简单的事情,因为 stdout 是多行的?
export IFS=";"
sentence="one;two;three"
for word in $sentence; do
echo "$word"
done
【问题讨论】:
-
for item in $string本身就是一种不当行为,主要是因为BashPitfalls #1 给出的原因是在相同的语法下不迭代ls或find。只有数组应该被迭代——依赖字符串拆分也会调用全局扩展。请注意,如果您愿意,您当然可以将文档插入到数组中。
标签: bash kubernetes yaml