如何回顯另一個字串 shell 變數的字串

如何回顯另一個字串 shell 變數的字串

我們想要回顯 shell 變數的值,該變數的變數名稱包含另一個變數字串。例如:

我們想要以下輸出

var1=1
var2=2

我們嘗試了幾種類似於下面的形式,但它們不起作用

for j in {1..2}
do
   export var${j}=$j
   echo "var${j}=${var${j}}"
done 

我們如何設定和回顯名稱中包含變數字串的 shell 變數?

謝謝

答案1

在 bash(或 ksh)中,您可以使用間接語法${!var}來引用名稱為 的值的變數$var。它必須是完整的名稱,所以你必須這樣做:

for j in {1..2}; do
   # This could have been declare instead of export if you don't need
   # to export the variable.
   export var${j}=$j
   varname=var$j
   echo "var${j}=${!varname}"
done

答案2

按照 @rici 的解釋這樣做,但這很少是一個好主意。如果您使用數組,則可以使用更簡單的語法實現相同的效果:

var=("1" "2");
for j in {0..1}
do
    echo "var$j : ${var[$j]}"
done

相關內容