假設我var
在 bash 中有一個變數。我可以給它賦值。例如,我將其設為字串:
var="Test"
我想要的是echo
的名稱var
,而不是 所擁有的值var
。 (我可以用 來做後者echo $var
,但我實際上想做前者。)
SO對這個問題的回答說要使用echo ${!var}
,但是當我這樣做時,我 echo 只傳回一個空行。例如,這個 bash 腳本
#!/bin/bash
echo "Hi"
var="Test"
echo ${!var}
echo "Bye"
返回此輸出:
Hi
Bye
之間只有一個空白行你好和再見, 代替變數。我究竟做錯了什麼?
我在跑bash 4.1.5(1)在烏班圖10.04.4。
答案1
這shell參數擴展 ${!name@}或者${!名*}可以做到這一點,
$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar
雖然可行,但我無法想像這個的用處......
答案2
如果你想簡單地輸出靜態變數名,你可以轉義$
- 符號:
echo \$var