var
戻り値がVAR1
($var
値付き)の変数()がありますVAR1
。定義された入力ファイルがありますVAR1
(VAR1=ABCDEF
)。
echo
値を取得するにはどうすればよいですか?ABCDEF
$var
他の多くのオプションを試しましたが、常に出力はorecho $(echo $var)
になりますが、決してそうではありません。私はそれを宣言されたファイルで使用し、コマンドプロンプトで試してみました。VAR1
echo VAR1
ABCDEF
source
VAR1
ベストアンサー1
bash
シェルを使用しているとします。
$ source ./file
$ echo "$VAR1"
ABCDEF
$ var=VAR1
$ echo "${!var}"
ABCDEF
${!var}
あなたを使って可変間接存在するbash
。変数の値は、var
拡張する変数の名前を取得するために使用されます。
bash
名前で変数を参照することもできます。
$ source ./file
$ echo "$VAR1"
ABCDEF
$ declare -n var="VAR1"
$ echo "$var"
ABCDEF
ここで変数は変数var
を参照するので、拡張されるすべての項目に展開されます。VAR1
$var
$VAR1
名前参照は、元々宣言ksh
されたシェルの機能でしたtypeset -n
。
名前参照は、シェル関数を呼び出すときに配列への参照を渡すのに役立ちます。
すべてのsh
シェルで:
$ . ./file
$ echo "$VAR1"
ABCDEF
$ var=VAR1
$ eval "echo \"\$$var\""
ABCDEF
このeval
ユーティリティは再評価する文字列を使用します。ここでは文字列を提供しますecho "$VAR1"
(拡張後$var
)。
問題は、eval
誤ってパラメータ文字列を生成するとエラーや脆弱性が発生しやすいことです。