私は次の設定を持っています:
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}