Я пытаюсь выполнить следующую команду Jenkinsfile, чтобы удалить все, кроме папки foobar :

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

Но я получаю следующую ошибку:

syntax error near unexpected token `('

Почему я получаю эту ошибку

1 ответ1

1

!(foobar) работает в bash , а не в sh ; все же это то, что делает sh в Jenkins :

Запускает сценарий оболочки Bourne, обычно на узле Unix. […] Системная оболочка по умолчанию будет запущена с использованием флагов -xe

Так что он использует sh а не bash . Команда позволяет вам использовать шебанг, хотя. Я верю, что это заставит вашу команду интерпретироваться Bash (при необходимости отрегулируйте shebang):

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .