回声遇到麻烦

时间:2019-01-08 14:48:37

标签: shell

我正在尝试执行以下代码进行2次迭代,但是对于第一次迭代,我得到的结果是错误的。

我运行以下命令: ./test.sh 2

# File name: test.sh

Y=`echo "$1 - 1" | bc -l`

dsp=(0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 )
file1=(0 0 0 0 0 -3 -3 -3 -3 -3 -6 -6 -6 -6 -6 )

for i in {0..$Y}
    do
        a=$dsp[$i]
        e=$file1[$i]
        echo "set_property LOC DSP48E2_X0Y$(echo "18*${i}+ 0 + $a" | bc)   [get_cells {name[$(echo "13*${i}+0 + $e" | bc)].dut}];"
    done

预期结果:

set_property LOC DSP48E2_X0Y0   [get_cells {name[0].dut}]
set_property LOC DSP48E2_X0Y18   [get_cells {name[13].dut}]

但是我收到一个错误:

(standard_in) 2: syntax error
(standard_in) 2: syntax error
set_property LOC DSP48E2_X0Y   [get_cells {name[].dut}];
set_property LOC DSP48E2_X0Y18   [get_cells {name[13].dut}];

1 个答案:

答案 0 :(得分:1)

变量在花括号内不起作用。要循环显示一系列数字,请使用C样式的for循环:

for ((i = 0; i < Y; i++)); do
    ...
done

您也不必使用bc。 Bash可以使用$((...))进行整数运算。

Y=$(($1 - 1))

...

echo "set_property LOC DSP48E2_X0Y$((18*i+a))   [get_cells {name[$((13*i+e))].dut}];"

此外,访问数组元素需要花括号:

a=${dsp[$i]}
e=${file1[$i]}