I have a script which needs to run npm run test and capture test coverage coverage value enter image description here so here I am trying to capture the value 36.95

并将其输出到gitlab脚本中,我计划将其添加为gitlab作业(job).似乎 run 者是gnu.如果我在本地执行下面的脚本,它可以正常工作,如返回36.95.

RES=$(npm test -- --coverage --watchAll=false)
TOTAL=$(sed -E 's/^.* All files \| ([^ ]+) \| .*$/\1/' <<< $RES)
echo "Current test coverage is : " $TOTAL

我认为这里是字符串(&lt;&lt;)与runner不兼容,这就是为什么它可以在我的本地机器上运行,但不能在gitlab上运行.也许我的脚本也有问题.

test:
  stage: test
  image: node:16.13.1
  before_script:
    - npm i
    - npx node -v
    - npx npm -v
  script:
    - echo "running test coverage"
    - bash test.sh

test.sh包含顶部提到的脚本

推荐答案

你可以直接打到sed

total=$(npm test -- --coverage --watchAll=false | sed -En '/All files/s/^[^|]*\| +([[:digit:].]+).*$/\1/p')
echo "Current test coverage is :  $total"

Linux相关问答推荐

在Groff mm中定义页眉不会更改第一页中的页眉

无法在嵌入式 Linux 中使用 libjpeg 以 RGB888 在 LCD(黑色)上显示 JPEG

+后移动下一行到当前行

Linux PREEMPT_RT:SCHED_OTHER 的性能优于 SCHED_FIFO.为什么?

根据文件名对目录中的文件进行 chgrp

如何彻底剥离可执行文件

使用 awk 或 sed 删除特定字符

如何使用多个版本的 GCC

无法创建Java虚拟机

为什么 Linux 不通过 TSS 使用硬件上下文切换?

我如何从 Ubuntu 上的源代码自己构建 python?

低功耗蓝牙:在 linux 中监听通知/指示

在 VIM 中搜索和替换导致尾随字符

如何将 bash 别名定义为多个命令的序列?

比较linux中两个未排序的列表,列出第二个文件中的唯一性

给定一个 linux 用户名和密码,我如何测试它是否是有效帐户?

如何在 Linux 上查找不包含文本的文本文件?

从线程内Forking 是否安全?

如何更改 tmux 会话的起始目录?

Linux shell 中的排序和唯一性