You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YAML字面量块置于常规行指令后无效?原因及解决方法

问题原因与解决方法

为什么第一种写法看似“有效”?

你其实误解了第一种写法的结构:build被赋值为一个多行字面量字符串(由|标记),后面的- mv file-a file-b根本不是独立指令,而是这个字符串里的一行内容。YAML解析后,build是一整个脚本字符串,执行时会把所有内容当成一段shell脚本运行,包括那行mv命令。

第二种写法无效的核心原因

你想让build成为一个指令列表,先执行mv再执行脚本块,但写法违反了YAML的列表语法规则:
YAML的列表每个元素必须以-开头,你在- mv...之后直接写|,解析器无法识别这是列表的第二个元素,会判定为语法错误。

正确实现方式

要完成先执行常规指令再执行字面量块的需求,需要把字面量块也作为列表的一个元素,加上-并保证缩进一致:

build: 
  - mv file-a file-b 
  - |
    if [ <condition> ]; then
         <command>
    else
         <command>
    fi

这样build会被解析成包含两个元素的列表,执行顺序就是先运行mv命令,再执行多行脚本块里的内容。

内容的提问来源于stack exchange,提问作者graphikjunkie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:10:38