![Bashで変数値の代わりに変数名をエコーする方法は? [閉鎖]](https://linux33.com/image/36541/Bash%E3%81%A7%E5%A4%89%E6%95%B0%E5%80%A4%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%AB%E5%A4%89%E6%95%B0%E5%90%8D%E3%82%92%E3%82%A8%E3%82%B3%E3%83%BC%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
var
Bashに変数があるとしましょう。私はそれに価値を与えることができる。たとえば、文字列で作成します。
var="Test"
私が望むのはecho
名前var
であり、それが含まれている価値ではありませんvar
。 (後者を実行するために使用できますが、echo $var
実際には前者を実行したいと思います。)
この質問に対するSOの回答を使用すると言いますが、echo ${!var}
これによりエコーは空行のみを返します。たとえば、このbashスクリプトは
#!/bin/bash
echo "Hi"
var="Test"
echo ${!var}
echo "Bye"
次の出力を返します。
Hi
Bye
間に空白行が1つしかありません。こんにちはそしてさようなら、変える変わりやすい。私は何が間違っていましたか?
私は走っているバッシュ 4.1.5(1)存在するUbuntu 10.04.4。
答え1
これシェルパラメータ拡張 ${!name@}または${!名前*}これはできます。
$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar
作業中にこれの用途を想像することはできません...
答え2
単に静的変数名を出力するには$
- シンボルをエスケープするだけです。
echo \$var