Bash for循环中的Grep变量

Bash for循环中的Grep变量,bash,Bash,我想为for循环中的每个循环grep一个特定的行。我已经在网上找到了我的问题的答案,我试过了,但似乎对我不起作用。。。我不知道我做错了什么 代码如下: for n in 2 4 6 8 10 12 14 ; do for U in 1 10 100 ; do for L in 2 4 6 8 ; do i=0 cat results/output_iteration/occ_"$L"_"$n"_"$U"_it"$i".dat for k in $(seq 1 1 $L)

我想为for循环中的每个循环grep一个特定的行。我已经在网上找到了我的问题的答案,我试过了,但似乎对我不起作用。。。我不知道我做错了什么

代码如下:

for n in 2 4 6 8 10 12 14 ; do
    for U in 1 10 100 ; do
        for L in 2 4 6 8 ; do
i=0
cat results/output_iteration/occ_"$L"_"$n"_"$U"_it"$i".dat
for k in $(seq 1 1 $L) ; do
        ${'var'.$k}=`grep "   $k    " results/output_iteration/occ_"$L"_"$n"_"$U"_it"$i".dat | tail -n 1`
done
这给了我:

%
%
%  site    density        double occupancy                
    1     0.49791021     0.03866179
    2     0.49891438     0.06077808
    3     0.50426102     0.05718336
    4     0.49891438     0.06077808
./run_deviation_functionL.sh: line 109: ${'var'.$k}=`grep "   $k    " results/output_iteration/occ_"$L"_"$n"_"$U"_it"$i".dat | tail -n 1`: bad substitution
然后,我只想取密度数,比如:

 ${'density'.$k}=`echo "${'var'.$k:10:10}"  | bc -l`

有人知道它失败的原因吗?

使用
declare
从变量创建变量名:

declare density$k="`...`"
使用变量间接检索它们:

var=var$k
echo ${!var:10:10}

因此,如果我理解得很好,我必须执行
声明var$k=
grep“$k”file.dat | tail-n1`?但是当我这样做的时候,我有这样的错误:./run.sh:line 109:declare:
1]:不是一个有效的标识符。/run.sh:line 109:declare:
0.49791021]:不是一个有效的标识符。/run.sh:line 109:declare:`0.03866179':不是一个有效的标识符,当我这样做时,var=var$k,echo$var;它给了我“var1”,“var2”。。。而不是我想要的线路grep@B_runo:如果涉及空格,请双引号引用
声明var$k=“`…`”