如何在 Azure DevOps 日志记录中执行 CR(回车)

时间:2021-04-12 10:11:48

标签: azure azure-devops yaml

我有一个简单的 yaml 脚本来启动一个任务:

trigger:
    branches:
      include:
      - '*'
    tags:
      include:
        - '*'
jobs:
  - job: Linux
    pool:
      name: BuildMachineUbuntu
    steps:
      - checkout: self
        clean: false
      - task: CmdLine@1
        inputs:
          filename: 'CI_Build_Linux.sh'

CI_Build_Linux.sh 是一个非常简单的脚本:

test_str=$'hello\rworld'
echo "$test_str"
exit 0

现在我希望结果是日志刚刚打印了 world。但是它打印了 2 行:helloworld

outcome from azure logging

正如标题所说,我如何在 Azure 中进行 CR? 我想使用它,因为我想打印进度,而不是垃圾邮件记录,而 SetProgress 不是我想要的。

编辑: 我在使用 system.debug 为 Bash 和 CmdLine 运行后添加了输出

来自 Bash 的输出: https://pastebin.com/YHwdHq1k

来自 CmdLine 的输出: https://pastebin.com/Mv33GKSk

1 个答案:

答案 0 :(得分:1)

我们可以重现这个问题,我们已经向 Developer Community 报告了这个问题,这是我们产品反馈的主要论坛,我会关注这个问题,如果有任何更新,我会在这里更新。

另外,由于一些问题,我需要在下周更新反馈票链接。

更新 1

我们已将此问题报告给产品组,我们可以关注此 feedback ticket 以获取最新消息。

更新 2

我收到了回复:

当您在 Bash 控制台中打印带有 '\r' 字符的字符串时 - '\r'(回车)只是将您的回车返回到字符串的起始位置并从该位置开始打印其他部分。这是您的终端的行为,而不是 Bash 的行为。这是对此的一个很好的解释:shell script - BASH and Carriage Return Behavior - Unix & Linux Stack Exchange

当您尝试在 Azure Devops 管道中运行此代码时,您没有终端,只有输出流,Bash 命令的所有结果都将流向其中,例如'\r' 行的第一部分,你会在日志中看到它。 我相信这不是错误,这种行为是设计的。