Bash
是否可以使用 shell 腳本列印變數內容的內容?(間接引用)
假設我已經聲明了以下變數:
$ var='$test' $ test="my string"
如果我列印他們的內容,我會看到以下內容:
$ echo $var $test $ echo $test my string
我想找到一種方法來列印內容的內容
$var
(即 的內容$test
)。所以我嘗試執行以下操作:$ echo $(echo $var) $test
但是這裡的結果是
$test
而不是"my string"
……是否可以使用bash列印變數內容的內容?
您可以使用 bash 的間接變數擴展來完成此操作(只要您可以
$
從參考變數中省略 ):$ var=test $ test="my string" $ echo "$var" test $ echo "${!var}" my string
對於包含在其中的變數名稱
var
以您為前綴的情況,$
可以使用eval
:$ var='$test' $ test="my string" $ eval echo $var my string
這裡會發生什麼:
- bash 擴展
$var
為 value$test
,產生一個eval echo $test
命令;eval
計算echo $test
表達式並產生所需的結果。請注意,
eval
通常使用可能是危險的(取決於儲存在 中的內容var
),因此最好避免使用它。間接擴展功能更適合您的情況(但您需要擺脫$
登錄$test
)。