jenkins - 从 bash 脚本中导出变量
问题描述
我必须使用 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 =
为什么它又变乱了?我错过了什么
解决方案
在子 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
推荐阅读
- ansible - 保存 Ansible 自定义模块的位置
- asp.net - 如何将数据从 clickOnce 应用程序传回给调用者
- machine-learning - 有条件抽样
- apache-spark - 获取数组中项目的索引,该数组是 Spark 数据框中的一列
- html - 导航文章和侧边宽度总和为 100%,但侧边换行
- vb.net - WebForms 标签文本未从 OnInit() 更新
- android - 正确使用反射获取Class方法
- amazon-web-services - 当 lambda 死亡时会发生什么?
- typescript - 指定参数必须具有 keyof 属性
- listview - 切换切换时隐藏数据单元格中的行