String 在Bash中传递变量两次

String 在Bash中传递变量两次,string,bash,variables,String,Bash,Variables,我希望命令:echo“$string4”在循环过程中返回文件开头定义的SETFIELDS\u X\u XX变量的值。但是,它只返回名称SETFIELDS\ux\uxx。我做错了什么 SETFIELDS_2_25=225 SETFIELDS_2_200=2200 SETFIELDS_2_500=2500 SETFIELDS_10_25=1025 SETFIELDS_10_200=10200 SETFIELDS_10_500=10500 SETFIELDS_10_1000=101000 SETFIE

我希望命令:
echo“$string4”
在循环过程中返回文件开头定义的
SETFIELDS\u X\u XX
变量的值。但是,它只返回名称
SETFIELDS\ux\uxx
。我做错了什么

SETFIELDS_2_25=225
SETFIELDS_2_200=2200
SETFIELDS_2_500=2500
SETFIELDS_10_25=1025
SETFIELDS_10_200=10200
SETFIELDS_10_500=10500
SETFIELDS_10_1000=101000
SETFIELDS_50_25=5025
SETFIELDS_50_200=50200
SETFIELDS_50_500=50500
SETFIELDS_50_1000=501000

for LBUB in 2 10 50
do
    for generations in 25 200 500 1000
    do
        string1="SETFIELDS_"
        string2="$LBUB"
        string3="_$generations"
        string4=$string1$string2$string3
    #echo "LBUB = $LBUB"
    #echo "generations = $generations"
    echo "$string4"
    done
done
改用这个:

echo ${!string4}

它将打印存储在变量设置字段_X_XX中的值

从字符串1、2和3的变量赋值中删除引号,然后重试。引号不会导致此错误。OP是否确定他正在使用
bash
?尝试过,但效果不佳。这很奇怪,因为它似乎无法识别
。。。它在我的代码中变得红色和粗体。你确定你在使用bash shell,因为它对我有效。嗨,chepner,是的,我在使用bash。。我有第一行代码/bin/sh
,只是没有把它放在问题中