如何打印编号变量

如何打印编号变量

我有以下变量:

display1 display2 display3 display4

我想将它们的内容打印在一行中。我使用以下命令,但我不明白为什么它不起作用:

for((i=1;i<=4;i++)); do printf '%s ' "$display$i"; done

答案1

$display您的代码评估两个变量和的输出$i。由于$display可能未设置,因此您只会看到 的输出$i

假设您正在使用bash,则可以使用形式为 的变量间接寻址${!varname}。首先,创建包含所需变量名称的新变量,然后使用间接寻址

for((i=1;i<=4;i++)); do
  varname=display$i
  printf '%s ' "${!varname}"
done

或使用名称引用用 which 声明的变量declare -n是对另一个变量的名称引用

for((i=1;i<=4;i++)); do
  declare -n ref=display$i
  printf '%s ' "$ref"
done

相关内容