변수 변수명 > 값은 어떻게 설정하나요?

변수 변수명 > 값은 어떻게 설정하나요?

나는 다음과 같은 설정을 가지고 있습니다 :

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}

관련 정보