[英]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.