以下を使用せずに変数内のbash変数を参照したいと思います。
echo "${!VARNAME}"
どんなアイデアがありますか?変数を動的に使用したいのですが、そのような参照が多いので、他の変数として宣言して使用することはできません。
例:
var1=host
${var1}_file ----> host_file is another variable that i want to call in a command.
ベストアンサー1
sh
スクリプトを書かない限り、変数ではない(間接bash
参照)を使用したくない理由を本当に理解していません。
すでに述べたようにeval
動作しますが、一般的に使用が危険になる可能性があるため、眉をひきます。特に、慎重にクリーンアップせずにユーザーから提供されたデータを評価する場合は、さらにそうです。
同じ効果を得るもう1つの方法は、名前参照変数(bash
バージョン4.3以降で利用可能)を使用することです。
var1=host
declare -n nameref="${var1}_file"
nameref="something something"
printf '%s\n' "$host_file"
これで文字列が出力されますsomething something
。とで動作させるには、typeset -n
代替を使用します。declare -n
bash
ksh93