来自变量串联的变量

来自变量串联的变量

我认为这是一个相当简单的问题,但是,我无法完成这项工作:我有一个完整的变量列表,例如:

SP60=OLA SP61=BYE SP62=TRT

我想创建一个循环来在变量的特定编号中调用它们,所以我认为一个简短的解决方案可能是:

for i in {60..62}; do SP=$"SP$i"; echo $SP.txt; done

我原本期待的结果是:

OLA.txt BYE.txt TRT.txt

但我得到

SP60.txt...

我想知道是否有一种简单的方法可以完成这项工作。

答案1

考虑以下bash/ksh脚本:

SP60="OLA"
SP61="BYE"
SP62="TRT"

for (( i = 60; i <= 62; ++i )); do
    typeset -n var="SP$i"
    printf 'SP%d = %s.txt\n' "$i" "$var"
done

它将输出以下内容:

SP60 = OLA.txt
SP61 = BYE.txt
SP62 = TRT.txt

它使用名称引用变量var(在and中使用declare -ninbash或 with进行声明)。这意味着每次取消引用它时,它都会扩展到它所引用的变量的值。typeset -nbashksh

答案2

变量已经初始化后的另一个选择:

for i in $SP{60..62}; do echo $i.txt; done

相关内容