새 변수 이름의 일부로 변수 값을 사용하여 변수를 만듭니다.

새 변수 이름의 일부로 변수 값을 사용하여 변수를 만듭니다.

기존 변수의 값을 변수 이름의 일부로 사용하여 새 변수를 만들려고 합니다.

filemsg"$word1"=" "

나도 시도했다

filemsg$word1=" "

filemsg${word1}=" "

모든 시도에서 이 줄이 실행되면 다음과 같은 결과를 얻습니다.

cicserrors.sh[45]: filemsgCICS= : not found [No such file or directory]

답변1

사용 eval:

filemsgCICS=foo
word1=CICS
eval "echo \"\$filemsg$word1\"" # => foo
eval "filemsg$word1=bar"
echo "$filemsgCICS" # => bar

하지만 정말 이런 방식이 필요하다면 다시 생각해 보세요.

또 다른 방법 ksh93이름 참조:

word1=CICS
nameref v=filemsg$word1
v="xxx" 
echo "$filemsgCICS" # => xxx

이와 같은 더 불쾌한 해킹을 보려면 다음을 확인하세요.여기.

답변2

exporteval쉘 토큰 다음에 쉘 코드가 실행될 위험이 없기 때문에 이렇게 하는 것보다 훨씬 안전합니다 . 하지만 변수를 처리하므로 export원하는 대로 사용할 수 있습니다.

export "filemsg$word1= "

답변3

그렇지 않다POSIX, 그러나 항상 bash있습니다 printf -v. stdout으로 인쇄하지 않고 다음과 같은 변수 이름으로 인쇄합니다 -v.

x=foo; printf -v $x bar; echo $foo

산출:

bar

답변4

이 시도:

filemsgCICS=foo

word1=CICS

ref_filemsg=filemsg$word1

echo ${!ref_filemsg} => foo

관련 정보