【问题标题】:Bash: assigning to a variable using another variable+textBash:使用另一个变量+文本分配给一个变量
【发布时间】:2015-09-12 15:30:41
【问题描述】:

我正在寻找使用 for 循环来使用基本相同的代码分配多个变量。

#!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 上搜索时试图描述它...

在赋值中使用变量时,有没有办法让这个变量赋值?

【问题讨论】:

  • 您基本上想要一个动态名称为您的变量(获取帮助here

标签: bash shell aix


【解决方案1】:

您可以在此处使用declare directive 来声明动态变量:

declare ${filling}_pie="True"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2018-07-20
    • 1970-01-01
    相关资源
    最近更新 更多