![](/img/trans.png)
[英]bash script arguments parsing differ when called from script and from command line
[英]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.