我正在尝试使用现有变量的值作为变量名称的一部分来创建一个新变量。
filemsg"$word1"=" "
Run Code Online (Sandbox Code Playgroud)
我也试过
filemsg$word1=" "
filemsg${word1}=" "
Run Code Online (Sandbox Code Playgroud)
在所有尝试中,当该行执行时,我得到以下结果,
cicserrors.sh[45]: filemsgCICS= : not found [No such file or directory]
Run Code Online (Sandbox Code Playgroud)
使用eval
:
filemsgCICS=foo
word1=CICS
eval "echo \"\$filemsg$word1\"" # => foo
eval "filemsg$word1=bar"
echo "$filemsgCICS" # => bar
Run Code Online (Sandbox Code Playgroud)
但如果你真的需要这种方式,请三思。
另一种方法ksh93
是使用namerefs:
word1=CICS
nameref v=filemsg$word1
v="xxx"
echo "$filemsgCICS" # => xxx
Run Code Online (Sandbox Code Playgroud)
对于更讨厌的黑客,请看这里。