我有一个 Jenkins 管道,其中有一个运行脚本的步骤sh
。像这样的东西,但之间有更多不相关的命令:
steps {
echo 'Running build with all parameters'
sh '''
#!/bin/bash
declare -A tests
... ETC
当我在 CentOS 的 Jenkins 节点上运行它时,一切都很好,管道通过所有步骤/命令成功运行。但是当我使用 Ubuntu 在 Jenkins 节点上运行相同的管道时,出现以下错误:
+ declare -A tests
/opt/jenkins-slave/workdir/workspace/Metaweb@tmp/durable-9a389b8a/script.sh: 14: declare: not found
有任何想法吗?
答案1
根据您当前编写脚本的方式,shebang 之前有一个非常微妙的换行符。要使换行符明确:
sh '''\n
#!/bin/bash\n
\n
declare -A tests\n
为了正确解释 shebang,它需要位于脚本的第一行,因此您需要删除前导换行符;即:
sh '''#!/bin/bash
declare -A tests