我正在尝试执行以下 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)
'''