如何在多行“脚本”步骤中中断单个命令

时间:2019-12-05 15:33:31

标签: yaml azure-pipelines

我们有一个使用Azure Pipeline的项目,它依赖于回购根目录下的azure-pipelines.yml文件。

实施script步骤时,可以在同一步骤中执行连续的命令,只需将它们写在不同的行上即可。

- script: |
  ls -la
  pwd
  echo $VALUE

但是,如果我们有一个非常长的命令,我们希望能够在YAML文件的多行中将其中断,但是找不到相应的语法?

3 个答案:

答案 0 :(得分:0)

您可以使用'^'将命令行分成多行。检查下面的例子。下面的脚本将像单行命令一样输出“ hello world”

- script: |
    echo ^
    'hello ^
    world'

答案 1 :(得分:0)

目前,我们发现在多行上中断单个命令的唯一方法是使用 YAML折叠样式

- script: >
    echo
    'hello world'

这全部是用|替换>

注意:

  • 不可能在以下几行中引入额外的缩进!例如,尝试对齐给定命令的所有参数将破坏行为。
  • 此样式将用简单的空白替换提供的值中的换行符。这意味着脚本现在只能包含单个命令(也许在行尾添加文字\n实际上会在字符串中引入换行符,但与通常的相比感觉落后了)自动换行的方法,除非添加了明确的延续)。

答案 2 :(得分:0)

您没有指定代理操作系统,因此我在windows-latestubuntu-latest上都进行了测试。请注意,脚本任务在这两种环境下运行略有不同。在Windows上,它使用cmd.exe。在Ubuntu上,它使用bash。因此,您必须使用正确的语法。

在Windows上:

pool:
  vmImage: 'windows-latest'

steps:
- script: |
    mkdir ^
    test ^
    -p ^
    -v

在Ubuntu上:

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: |
    mkdir \
    test \
    -p \
    -v

上面的两个文件在我的Azure DevOps上工作。