Jenkinsfile / bash: erro de sintaxe


0

Estou tentando executar este comando Jenkinsfile seguindo para excluir tudo, exceto o foobar pasta :

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

Mas recebo o seguinte erro:

syntax error near unexpected token `('

Por que estou recebendo esse erro

Respostas:


1

!(foobar) trabalha em bash, não em sh; ainda é isso que sh em Jenkins faz:

Executa um script de shell Bourne, geralmente em um nó Unix. […] O shell padrão do sistema será executado, usando o -xe bandeiras

Então usa sh ao invés de bash. O comando permite que você use um shebang embora. Eu acredito que isso fará com que seu comando seja interpretado por Bash (ajuste o shebang se necessário):

sh '''#!/bin/bash
      rm -rf ./path/to/folder/!(foobar)
   '''
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.