在Jenkins管道脚本中运行时Bash条件失败

时间:2020-07-22 19:55:55

标签: bash jenkins jenkins-pipeline

在我的Jenkins服务器上从bash命令行运行时,以下条件正常工作:

if (($BRANCH_COUNT > 0)); then ..... 

但是在Jenkins管道步骤(调用sh ''' .... ''')的上下文中运行时,它会写一个错误,并且总是评估为false。错误消息(如下)表明它可能正在将$ BRANCH_COUNT的值(在这种情况下为1)解释为命令,然后找不到该命令?

/var/jenkins/workspace/deploy-config-db-update@tmp/durable-baa54bb3/script.sh: 16: 
/var/jenkins/workspace/deploy-config-db-update@tmp/durable-baa54bb3/script.sh: 1: not found

由Jenkins sh命令运行时,bash环境是否有所不同?需要一些特殊的转义或引用吗?

2 个答案:

答案 0 :(得分:0)

如果使用sh'''...''',则管道脚本变量将不会在Shell脚本中扩展。您需要使用sh """..."""

答案 1 :(得分:0)

将威廉·珀塞尔(William Pursell)的评论改成答案,因为它解决了问题。

使用(())是一种bashism。尝试测试“ $ BRANCH_COUNT” -gt 0;然后...