如何用#!/ bin / sh(POSIX sh)查找名称variables?

f1="filename1"; i=1; c=f$i echo $c 

我应该使用什么shell命令,以便echo $c返回“filename1”作为输出?

Solutions Collecting From Web of "如何用#!/ bin / sh(POSIX sh)查找名称variables?"

您可以使用eval来“嵌套”变量替换。

 f1="filename1"; i=1; eval c=\${f$i} echo $c 

使用变量间接。

 #!/bin/bash f1="filename1"; i=1; c=f$i echo ${!c} 

它工作在bash(GNU bash,版本4.1.2(1) – 释放)。 我还没有尝试过其他的shell。

避免像eval这样的密集型操作。 使用关联数组。

 #!/bin/bash typeset -A v c[f1]=filename1 i=1 echo ${c[f$i]}