我正在嘗試將從密鑰庫中獲取的密鑰作為 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"
我讀過 export 僅臨時存盤變數。
腳本運行,但變數未在最后設定。我想在執行時看到它們
printenv
uj5u.com熱心網友回復:
假設:
- OP 想要動態填充和匯出一個新變數,以便...
- 新變數在當前會話中可用/匯出
使用 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
uj5u.com熱心網友回復:
如果您運行腳本來設定變數,則變數將僅在該特定執行的背景關系中設定。要設定變數,您必須獲取檔案,而不是執行它。
前任。設定環境檔案
#!/bin/bash
export var1=value1
export var2=value2
如果這樣做./setenv.bash,var1 和 var2 將僅在腳本運行時存在。
如果您執行. ./setenv.bash或source ./setenv.bash,則腳本完成后 var1 和 var2 將存在。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328571.html
下一篇:未決議Bash腳本引數
