在 bash 中,如何回顯變數名稱而不是變數值?

在 bash 中,如何回顯變數名稱而不是變數值?

假設我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

相關內容