f1="filename1";
i=1;
c=f$i
echo $c
我应该使用什么shell命令,以便echo $c
返回" filename1"作为输出?
答案 0 :(得分:4)
使用变量间接。
#!/bin/bash
f1="filename1";
i=1;
c=f$i
echo ${!c}
它适用于bash(GNU bash,版本4.1.2(1) - 发行版)。我没有尝试过其他炮弹。
答案 1 :(得分:1)
避免像eval这样的密集操作。使用关联数组。
#!/bin/bash
typeset -A c
c[f1]=filename1
i=1
echo ${c[f$i]}
答案 2 :(得分:0)
您可以使用eval
来"嵌套"变量替换。
f1="filename1";
i=1;
eval c=\${f$i}
echo $c
答案 3 :(得分:0)
# Expand the variable named by $1 into its value. Works in both {ba,z}sh
# eg: a=HOME $(var_expand $a) == /home/me
var_expand() {
if [ -z "${1-}" ] || [ $# -ne 1 ]; then
printf 'var_expand: expected one argument\n' >&2;
return 1;
fi
eval printf '%s' "\"\${$1?}\""
}
在给出警告时会发出警告: