簡體   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