【问题标题】:How to do CR (Carriage return) in Azure devops logging如何在 Azure devops 日志记录中执行 CR(回车)
【发布时间】:2021-07-07 10:15:40
【问题描述】:

我有一个启动任务的简单 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

所以正如标题所说,如何在 Azure 中进行 CR? 我想使用它,因为我想打印进度,但不是垃圾日志,SetProgress 不是我想要的。

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

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

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

【问题讨论】:

  • 您是否尝试在 Bash 任务而不是 CmdLine 任务中运行此脚本?当然,这并不重要,因为 CmdLine 会使用基于代理操作系统的相应 shell,但只是想知道。
  • 嗨@TomasBerger,我可以重现这个问题,我们可以将变量system.debug设置为true来检查详细日志,然后我们可以看到bash.exe路径,你可以在本地运行它并输入脚本,然后再次检查。谢谢
  • @VitoLiu-MSFT 我现在已将带有“system.debug”的日志输出添加为 true。如果我在本地运行脚本,它可以工作。我正在运行 Ubuntu,所以没有 exe
  • 嗨@TomasBerger,我已经更新了答案并添加了反馈票。
  • 嗨@TomasBerger,我收到了项目组的回复,我已经更新了答案,你可以查看update2。

标签: azure azure-devops yaml


【解决方案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' 行的第一部分,你会在日志中看到它。 我相信这不是错误,并且这种行为是设计好的。

【讨论】:

    猜你喜欢
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多