我使用bash 4,并设置了几个变量(每个变量都以MIH_
开头),类似于:
: "${MIH_POD_NAME:=$(kubectl get pods --namespace mih -l "app.kubernetes.io/name=mih,app.kubernetes.io/instance=mih" -o jsonpath="{.items[0].metadata.name}")}"
我想知道是否有可能在创建这些环境变量时将其详细信息打印到stdout内联,而不是必须创建它们,然后分别在它们上面打印,使用:
for var in "${!MIH_@}"; do
logger $(printf '%s=%s\n' "$var" "${!var}")
done
输出量:
INFO MIH_POD_NAME=mih-8695f87c8c-t5klb
(Note,logger
是我写的一个函数,它接受一个字符串并将其格式化为一个漂亮的输出。
在:
之前添加echo
只会打印冒号之后的值:: mih-8695f87c8c-t5klb
我设法做到这一点,通过添加:
; eval "logger $(printf '%s=%s\n' MIH_POD_NAME $MIH_POD_NAME)"
每个命令的结尾。但我想知道是否有一种更有活力的方式来实现这一目标?
1条答案
按热度按时间0tdrvxhp1#
您可以使用**
declare
**来实现您的目的。我们可以使用关联数组选项(
-A
)将变量名存储为键,将相应的命令存储为值。例如:DEMO