如何将单行Bash无限循环Shell脚本转换为YAML格式?
把Bash无限循环转为等效YAML写法的解决方案
没问题,我来帮你搞定这个转换!首先直接给结论:你说的command: "while true; do hackbench; done"在部分场景下是可行的,但更通用、更可靠的写法需要结合bash解释器来指定,避免执行报错。
两种有效写法:
字符串形式(场景受限)
如果你的YAML配置工具默认会把command字段的字符串传给shell(比如Docker Compose、部分CI/CD平台),那你最初的写法是可以正常工作的:command: "while true; do hackbench; done"工具会自动调用shell来解析这个循环语句,和你直接在bash里运行效果完全一致。
数组形式(通用推荐)
很多工具默认会直接执行command指定的程序(不经过shell),而while是bash的内置语法,不是独立可执行文件,这时候直接写循环字符串会报错“找不到while命令”。这种情况下,必须显式调用bash来解释执行你的循环:command: ["bash", "-c", "while true; do hackbench; done"]这个写法明确告诉系统:用bash解释器,执行后面的循环命令字符串,不管工具的默认执行逻辑如何,都能保证和原Bash脚本完全等效,兼容性拉满。
总结
如果不确定工具的执行逻辑,优先用数组形式的写法;如果明确工具会通过shell解析command字符串,那两种写法都可以满足需求。
内容的提问来源于stack exchange,提问作者nobody
相关产品推荐
相关产品推荐

