【问题标题】:Export of a variable from a bash script从 bash 脚本中导出变量
【发布时间】:2021-07-07 11:55:46
【问题描述】:

我有一些变量将通过 kubenetes 命令完成,所以我认为最好将它们放在 bash 脚本中。我已经设法做到这一点并调用它并看到变量被创建,但是当它来自 bash 脚本时,它们没有被分配。

在我的 Jenkinsfile 脚本中

steps {
    sh '''
      ./bin/kube.sh
      echo "Kube2 = ${SCRET}"

.....

在我的 kube.sh 文件中

#!/bin/bash

export SCRET=`kubectl -n keycloak get secret auser -o yaml | grep password | awk '{print $2}'`
echo "Kube2 = ${SCRET}"

我得到以下结果

+ ./bin/kube.sh
Kube1 = XXXXXXXX
+ echo 'SCRET = XXXXXXXX'
Kube2 = 

为什么它再次被取消设置?我错过了什么

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline jenkins-groovy jenkins-job-dsl


    【解决方案1】:

    设置在子 shell 中的变量随该 shell 蒸发,不会导出到父 shell。

    要使用脚本在当前环境中设置变量,您必须将代码来源到当前上下文中。

    $: cat x
    foo=bar
    $: ./x && echo $foo # runs in a subshell - foo ends with ./x
    
    $: . x && echo $foo # runs in current shell - foo is set
    bar
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2022-01-17
    相关资源
    最近更新 更多