将数组元素转换为抓取克隆变量名称

时间:2017-12-02 07:00:47

标签: bash shell variables

我试图在循环中从$ Table_Header_Labels中获取元素,并让它获取用于字符串长度的相同名称的字符串。例如:Grabbed" Apple"从数组中然后将其转换为抓取$ Apple以获取字符串$ {#Apple}。

#!/bin/bash

# Create Array
declare -a Array=('Red' 'Blue' 'White');

# Set Variable
Red="Apples are Red!"

# Get Size of Variable from Array Element
for i in ${Array[0]}
do
    Element=${i}
    Element_Size="${i}_Size"

    # Print the generated one
    echo "$Element_Size = ${#Element}"

    # Print correct one to compare
    echo "Red_Size = ${#Red}"
    echo ""
done

请注意我故意这样做,所以循环只进行一次。目前,Red_Size对数组元素本身进行计数,即三。我试图让它获取数组元素并获取分配给由数组元素复制的变量的字符串。

基本分解说明:Apple => $苹果

BASH可以实现这一点吗?

1 个答案:

答案 0 :(得分:0)

要获取名称在变量中的变量的值, 您可以使用${!name}语法。 例如,如果i包含变量名称“Red”, 获取变量Red的值, 你可以写${!i}

在你的剧本中:

Element=${!i}  # if $i is "Red" -> $Red -> "Apples are Red!"