BASH 脚本在 Cygwin 中完美运行,从 Jenkinses 启动时崩溃"Execute shell"



我对 Jenkins 有问题。我有一个这样的循环(嵌入在...做。。完成循环)

var=$(head $file | grep ERROR)
if [ ! -z "$var" ]; then
  echo "Some error message"
  .././converter.sh $file $file.TMP $file.ERR.txt
  RESULT=$(expr $RESULT + 10)
fi

这个循环在从 Cygwin 启动时运行良好,但在 Jenkins 上启动时崩溃......詹金斯从嘴里吐出的所有信息:

08:55:50 + for file in '*.DATA'
08:55:50 ++ grep ERROR
08:55:50 ++ head TESTFILE_1.DATA
08:55:50 + var=
08:55:50 Build step 'Execute shell' marked build as failure
08:55:50 Archiving artifacts
当使用

Execute Shell 在 Jenkins 下运行时(来自 Execute Shell 构建步骤的帮助文档):

默认情况下,将使用"-ex"选项调用 shell。因此,所有命令在执行之前都会打印,如果任何命令以非零退出代码退出,则构建被视为失败。再次添加 #!/bin/...行以更改此行为。

重申一下,这意味着任何错误(例如 grep 退出并显示错误代码)都将导致脚本过早退出并显示错误。通常,当您执行此脚本时,它可能会成功,因为set -e不是默认值。

确定这是否确实是问题的任何简单测试都是将执行 Shell 脚本的第一行设置为#!/bin/sh -x

最新更新