我正在尝试将从密钥保管库获取的密钥保留为 Linux 服务器上给定用户的环境变量。该脚本不起作用。我什至无法看到变量是否在 shell 中临时设置。
这是我的剧本。
#!/usr/bin/env bash
  KEY_VAULT=$1
function fetch_secret_from_keyvault() {
    local SECRET_NAME=$1
    az keyvault secret show --vault-name "${KEY_VAULT}" --name "${SECRET_NAME}" --query "value"
}
function store_secret_from_keyvault() {
    local SECRET_VAR=$1
    local SECRET_NAME=$2
    local SECRET_VALUE=`fetch_secret_from_keyvault "${SECRET_NAME}"`
    store_secret "${SECRET_VAR}" "${SECRET_VALUE}"
}
function store_secret() {
    local SECRET_VAR=$1
    local SECRET_VALUE=$2
    echo "export ${SECRET_VAR}=${SECRET_VALUE}"
}
echo "# ----------------------- "
echo "# Fetched the following secret from ${KEY_VAULT} on "`date`
store_secret_from_keyvault "MONGO_URI" "local-dev-mongo-uri"
我读过,导出仅临时存储变量。
脚本运行,但最后未设置变量。我想在执行时看到它们
printenv
如果您运行脚本来设置变量,则变量将仅在该特定执行的上下文中设置。要设置变量,您必须获取文件,而不是执行它。
前任。设置环境.bash
#!/bin/bash
export var1=value1
export var2=value2
如果这样做./setenv.bash,var1 和 var2 将仅在脚本运行时存在。
如果执行. ./setenv.bashor source ./setenv.bash,则脚本完成后 var1 和 var2 将存在。
假设:
使用 nameref 的一个想法...
function store_secret() {
    declare -n SECRET_VAR=${1}
    export SECRET_VAR=${2}
}
运行测试:
$ unset secret_var
$ secret_var=56
$ typeset -p secret_var
declare -- secret_var="56"                  # defined as a normal variable
$ unset secret_var
$ typeset -p secret_var
-bash: typeset: secret_var: not found       # variable is undefined
$ store_secret secret_var 47
$ typeset -p secret_var
declare -x secret_var="47"                  # defined as an exported variable
| 归档时间: | 
 | 
| 查看次数: | 4520 次 | 
| 最近记录: |