我有以下设置:
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"
答案2
使用eval
。它将把它的参数解析为普通语句:
#!/bin/bash
NODEX="sn1"
varname="${NODEX}_payTimestamp"
eval $varname=$(date --utc +%Y%m%d_%H%M%SZ)
echo $varname
echo ${!varname}