变量变量名 > 如何设置值?

变量变量名 > 如何设置值?

我有以下设置:

NODEX="sn1"                   

varname="${NODEX}_payTimestamp"

echo "${!varname}"

> sn1_payTimestamp

如何为变量“sn1_payTimestamp”设置值?

类似的事情?

${!varname}=$(date --utc +%Y%m%d_%H%M%SZ);

提前谢谢

更新

关联数组似乎是最好的解决方案。有没有一种好方法将它们存储到文本文件中并从文本文件中读取它们?这就是为什么我打算使用“变量变量名”。

答案1

如果您使用的是 Bash,请改用关联数组:

#!/bin/bash
declare -A paytimestamps
node=sn1
paytimestamps[$node]=$(date --utc +%Y%m%d_%H%M%SZ);
echo "${paytimestamps[$node]}"

或者,如果您确实想使用命名变量,请使用 nameref:

#!/bin/bash
node=sn1
declare -n "ref=paytimestamps_$node"
ref=$(date --utc +%Y%m%d_%H%M%SZ);
echo "$ref"

bash 是否支持使用指针?

答案2

使用eval。它将把它的参数解析为普通语句:

#!/bin/bash
NODEX="sn1"                   
varname="${NODEX}_payTimestamp"

eval $varname=$(date --utc +%Y%m%d_%H%M%SZ)

echo $varname
echo ${!varname}

相关内容