我正在尝试使用现有变量的值作为变量名称的一部分来创建新变量。
filemsg"$word1"=" "
我也尝试过
filemsg$word1=" "
filemsg${word1}=" "
在所有尝试中,当该行执行时我都会得到以下结果,
cicserrors.sh[45]: filemsgCICS= : not found [No such file or directory]
答案1
答案2
export
这样做比 这样做安全得多,eval
因为它不存在在 shell 令牌之后执行 shell 代码的危险。但它会处理export
变量,因此您可以随心所欲地接受它。
export "filemsg$word1= "
答案3
它不是POSIX,但总是bash
有printf -v
,它不打印到标准输出,而是打印到后面的任何变量名称-v
:
x=foo; printf -v $x bar; echo $foo
输出:
bar
答案4
尝试这个:
filemsgCICS=foo
word1=CICS
ref_filemsg=filemsg$word1
echo ${!ref_filemsg} => foo