繁体   English   中英

从 Jenkins 管道调用时,Bash 脚本从不接收参数

[英]Bash script never receives arguments when called from Jenkins pipeline

我在 Ubuntu 18.04 slave 上运行声明式 Jenkins 管道。 我的问题是,每当我尝试从sh步骤向 bash 脚本提供参数时,参数都不存在。 当直接从终端或另一个脚本文件(类似于 Jenkins 通过临时文件执行此操作)运行完全相同的命令时,参数工作正常。

Jenkinsfile 看起来像

pipeline {
    agent { label "ubuntu" }
    options { timeout(time: 1, unit: 'HOURS') }
    stages {
        stage('Build') {
            steps {
                sh """
                #!/bin/bash
                ...
                . ./Scripts/install_tools.sh "force"
                """
            }
        }
    }
}

管道本身运行平稳,可以完成我需要它做的事情。 问题是调用install_tools.sh时找不到参数。 脚本看起来像

#!/bin/bash
echo "Running $0"
echo "Args: $@"

...

echo "Args: $@"我也尝试过使用$*$1 - 每次参数返回为空,但仅在从管道运行时。 在我看来,这与一些 Groovy 的东西有关,但我不知道是什么。

如何在管道期间调用 bash 脚本并正确传递参数?

#!/bin/bash放入第一行

sh """#!/bin/bash
   . ./Scripts/install_tools.sh "force"
   """

否则 。 (点)命令可能有不同的含义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM