Bash:使用另一个变量+文本赋值给一个变量
Bash: assigning to a variable using another variable+text
我正在寻找使用 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
.
要么我的 shell 讨厌馅饼,要么我做错了什么,但我似乎找不到其他人这样做的实例,或者至少我找不到任何人描述的实例当我在 Google...
上搜索时,它就是我试图描述的方式
有没有办法在赋值中使用变量的同时赋值给变量?
你可以在这里使用declare
directive声明动态变量:
declare ${filling}_pie="True"
我正在寻找使用 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
.
要么我的 shell 讨厌馅饼,要么我做错了什么,但我似乎找不到其他人这样做的实例,或者至少我找不到任何人描述的实例当我在 Google...
上搜索时,它就是我试图描述的方式有没有办法在赋值中使用变量的同时赋值给变量?
你可以在这里使用declare
directive声明动态变量:
declare ${filling}_pie="True"