変数名の一部として既存の変数の値を使用して、新しい変数を作成しようとしています。
filemsg"$word1"=" "
私も試しました
filemsg$word1=" "
filemsg${word1}=" "
すべての試行で、その行が実行されると次のようになります。
cicserrors.sh[45]: filemsgCICS= : not found [No such file or directory]
承認された回答:
eval
を使用する :
filemsgCICS=foo
word1=CICS
eval "echo "$filemsg$word1"" # => foo
eval "filemsg$word1=bar"
echo "$filemsgCICS" # => bar
しかし、本当にこの方法が必要な場合は、よく考えてください。
ksh93
の別の方法 namerefsを使用することです:
word1=CICS
nameref v=filemsg$word1
v="xxx"
echo "$filemsgCICS" # => xxx
そのようなさらに厄介なハックについては、こちらをご覧ください。