【问题标题】:Print multiple bash variables打印多个 bash 变量
【发布时间】:2016-01-14 08:36:55
【问题描述】:

我有以下脚本。

#!/bin/bash
d5=me
d6=you
d7=re

for i in {5..7}
do
    echo $"d$i"
 done

打印出来
d5
d6
d7

我要打印


重新

【问题讨论】:

  • 为什么不用数组?任何时候你发现自己用这样的顺序名称构造变量时,它可能应该是一个数组。

标签: bash indirection


【解决方案1】:

您可以使用"${!varName}" 来引用存储在varName 变量中的值:

for i in {5..7}; do v="d$i"; echo "${!v}"; done
me
you
re

Check indirect variable expansion in bash

甚至更简单:

for v in d{5..7}; do echo "${!v}"; done
me
you
re

【讨论】:

    【解决方案2】:

    你也可以使用eval:

    for i in {5..7}; do eval echo \$d$i ; done
    

    【讨论】:

    • 是的,你可以使用eval,但鉴于有一个用于间接变量扩展的专用机制(参见anubhava的回答),为什么你,考虑到eval 的安全风险?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    相关资源
    最近更新 更多