Bash:使用另一个变量+文本分配给一个变量

标签 bash shell aix

我希望使用 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:找不到命令。我也尝试过 Y|y) ${${filling}}_pie="True";,但是当我这样做时,我得到 bash: ${${filling}}_pie =“True”:错误替换

要么是我的 shell 讨厌馅饼,要么是我做错了什么,但我似乎找不到其他人这样做的实例,或者至少我找不到任何人以我的方式描述它的实例当我在 Google 上搜索时尝试描述它...

在赋值中使用变量时是否有办法让它分配一个变量?

最佳答案

您可以使用declare directive在这里声明动态变量:

declare ${filling}_pie="True"

关于Bash:使用另一个变量+文本分配给一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060281/

相关文章:

linux - linux中如何退出select

linux - zsh menu completion 导致 zle reset-prompt 后出现问题

Perl:文件大于 2 GB 的 glob 的奇怪行为

python - 如何使用 shell 命令将目录作为参数传递给 python 脚本?

linux - 如何向每个 curl 命令发送相同的 cookie?

bash - docker '$ yes | true' 中的 Gitlab runner 以 exit 1 返回

linux - shell 中的制表符给出不同的宽度

java - 使用 Runtime.exec 将 CC 添加到 mailx 命令

linux - 显示AIX系统运行时钟

Linux SHELL 脚本,读取每行不同的列数