ECHO変数のLinux ECHO出力

ECHO変数のLinux ECHO出力

var戻り値がVAR1$var値付き)の変数()がありますVAR1。定義された入力ファイルがありますVAR1VAR1=ABCDEF)。

echo値を取得するにはどうすればよいですか?ABCDEF$var

他の多くのオプションを試しましたが、常に出力はorecho $(echo $var)になりますが、決してそうではありません。私はそれを宣言されたファイルで使用し、コマンドプロンプトで試してみました。VAR1echo VAR1ABCDEFsourceVAR1

答え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誤ってパラメータ文字列を生成するとエラーや脆弱性が発生しやすいことです。

答え2

を使用すると仮定すると、間接bash参照を使用してこれを簡単に実行できます。

$ foo=bar
$ bar=magicword
$ printf "%s\n" "${!foo}"
magicword

構文$var(または${var})は変数の内容を生成しますvar

${!var}変数の内容を生成する構文にちなんで命名 var

関連情報