Jenkinsfile/bash:语法错误

Jenkinsfile/bash:语法错误

我正在尝试执行以下 Jenkinsfile 命令来删除除foobar文件夹之外的所有内容:

node {
    stage('Clean') {
        sh 'rm -rf ./path/to/folder/!(foobar)'
    }
}

但我收到以下错误:

syntax error near unexpected token `('

为什么我会收到此错误

答案1

!(foobar)起作用bash,而不是sh;但这仍然是sh在詹金斯做:

-xe通常在 Unix 节点上运行 Bourne shell 脚本。[…] 将使用标志运行系统默认 shell

因此它使用sh而不是bash。但是该命令允许您使用 shebang。我相信这将使您的命令被 Bash 解释(如果需要,请调整 shebang):

sh '''#!/bin/bash
      rm -rf ./path/to/folder/!(foobar)
   '''

相关内容