我需要在YAML文件的“script”部分中使用一个until-do循环,until
子句中的命令在视觉上受益于被分成多行:
- >
helm upgrade $(...) /helm/charts/ -f .(...)
--install
--set host=(...)
--set tag=(...)
--set image=(...)
--namespace (...)
我尝试过使用这种格式将helm upgrade
命令包含在一个until-do循环中:
- >
until helm upgrade $FOO helm/charts/ -f ./(...)
--install
--set imagePullSecret=(...)
--set host=(...) --set tag=(...)
--set image=(...)
--namespace (...); do
helm uninstall $FOO
done
...导致错误:
(...): line 161: --install: command not found
(...): line 162: --set: command not found
(...): line 163: --set: command not found
(...): line 164: --set: command not found
(...): line 165: --namespace: command not found
Error: uninstall: Release not loaded: (...): release: not found
然而,如果我放弃努力使这一点更可读:
- >
until helm upgrade foo helm/charts/ -f ./(...) --install --set imagePullSecret=(...) --set host=(...) --set tag=(...) --set image=(...) --namespace (...); do
helm uninstall foo
done
...命令按预期运行:
Release "bar" has been upgraded. Happy Helming!
在YAML中,将多行命令包含在until-do循环中的正确方法是什么?
1条答案
按热度按时间4dc9hkyq1#
YAML中的文本块标量(以
>
开头)会将行尾折叠到连续非空行之间的空格中...除非其中一行的缩进比标量的基本缩进多。它被设计成
将被解析为
因为
*
符号比lorem ipsum
行缩进更多。在您的情况下,这意味着如果您想将命令分成多行,但又想将其解析为单行,则不能缩进续行:
您可以缩进
helm uninstall
,因为它应该作为单独的命令执行。如果你不喜欢这样并且想缩进续行,你需要转义结果换行符: