从 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
我有一些变量将通过 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