从 bash 脚本导出变量

Export of a variable from a bash script

我有一些变量将通过 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 }'`
echo "Kube2 = ${SCRET}"

我得到以下结果

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

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

在子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