bash に変数があるとしますvar
。これに値を割り当てることができます。たとえば、文字列にします。
var="Test"
echo
私が知りたいのは の名前であってvar
、 が保持する値ではありませんvar
。( では後者を実行できますecho $var
が、実際に実行したいのは前者です。)
SOからのこの質問への答えを使うように書かれていますecho ${!var}
が、そうするとechoはただの空行を返します。例えば、このbashスクリプト
#!/bin/bash
echo "Hi"
var="Test"
echo ${!var}
echo "Bye"
次の出力を返します:
Hi
Bye
間に空白行を挟んでこんにちはそしてさよなら、 の代わりにvar何が間違っているのでしょうか?
走っていますバッシュ4.1.5(1)の上ウブントゥ 10.04.4。
答え1
のシェルパラメータの拡張 ${!name@}または${!name*}うまくいくかもしれない、
$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar
実現可能ではありますが、これがどのような有用性を持つのか想像できません...
答え2
単純に静的変数名を出力したい場合は、$
- 記号をエスケープすることができます。
echo \$var