2015-06-25 106 views
2

我正在寻找使用for循环使用基本相同的代码分配几个变量。Bash:分配给一个变量使用另一个变量+文本

#!bin/bash 
for ((i=1; i<=4; i++)); do 
    case ${i} in 
     1) filling=apple; a=an ;; 
     2) filling=peach; a=a ;; 
     3) filling=pecan; a=a ;; 
     4) filling=cherry; a=a ;; 
    esac 
    echo "Would you like ${a} ${filling} pie? Y/N" 
    read var1 
    case ${var1} in 
     Y|y) ${filling}_pie="True" ;; 
     N|n) ${filling}_pie="No" ;; 
    esac 
done 

此脚本完全按照预期工作,除非在最后分配变量。我得到apple_pie=True: command not found。我也试过Y|y) ${${filling}}_pie="True" ;,但是当我这样做时,我得到bash: ${${filling}}_pie="True": bad substitution

我的外壳不喜欢馅饼,或者我做错了什么,但我似乎无法找到任何其他人的一个实例,或者至少我不能以任何人的实例来描述它,当我在Google上搜索时试图描述它...

有没有办法在赋值中使用变量时分配变量?

+2

你基本上要一个动态的名称为您的变量(获得帮助[这里](http://stackoverflow.com/questions/16553089/bash-动态可变名)) –

回答

相关问题