我在Ubuntu 18.04 slave上运行一个声明性的Jenkins管道。我的问题是,每当我试图从sh
步骤向bash脚本提供参数时,参数都不在那里。当直接从终端或另一个脚本文件运行完全相同的命令时(类似于Jenkins通过临时文件的方式),参数都工作正常。
Jenkins文件看起来像
pipeline {
agent { label "ubuntu" }
options { timeout(time: 1, unit: 'HOURS') }
stages {
stage('Build') {
steps {
sh """
#!/bin/bash
...
. ./Scripts/install_tools.sh "force"
"""
}
}
}
}
管道本身运行顺畅,并完成了我需要它完成的工作。
# !/bin/bash
echo "Running $0"
echo "Args: $@"
...
echo "Args: $@"
行我也尝试过$*
和$1
-每次参数都返回为空,但只有在从管道运行时。在我看来,这似乎与一些Groovy的东西有关,但我不知道是什么。
如何在管道中调用bash脚本并正确传递参数?
1条答案
按热度按时间pkwftd7m1#
将
#!/bin/bash
放入第一行否则.(点)命令可能具有不同含义