既存の変数の値を変数名の一部として使用して新しい変数を作成しようとしています。
filemsg"$word1"=" "
私も試しました
filemsg$word1=" "
filemsg${word1}=" "
すべての試行でこの行が実行されると、次の結果が得られます。
cicserrors.sh[45]: filemsgCICS= : not found [No such file or directory]
答え1
答え2
export
eval
シェルトークンの後にシェルコードが実行される危険性がないため、これを行うよりもはるかに安全です。ただし、変数を処理するので、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