KSH错误:' $'意外

时间:2012-10-19 09:32:14

标签: arrays ksh

在KSH脚本下面导致错误“第4行语法错误:'$'意外”

!#/bin/ksh
for i in `cat pins.list`
do
        set -A array_${i} `grep -i "$i " pins.txt | awk '{print $2}'`
        echo "Elements of array_${i} are ${array_${i}[@]}"
done

#=================================

在解析文件pins.txt后,我为i的每次迭代创建多个数组(array_ $ i)。
我可以看到数组array_block,array_group,array_range已创建,并且pins.txt的元素正确存储在这些数组中,但由于此错误,我无法打印每个数组的值。在循环外打印这3个数组的内容没有问题。但我需要在循环内访问这些数组,以便在我的脚本中进一步处理。有办法解决这个问题吗?

pins.list和pins.txt的内容如下:

pins.list (Arrays)
==================
block
group
range


pins.txt
===========

range     444
group     46
range     32
block     96
group     99
range     123
block     56
range     22

由于

1 个答案:

答案 0 :(得分:0)

您无法以这种方式创建动态变量名称,需要eval。例如:

while read i
do
    eval "set -A array_${i} \$(grep -i $i pins.txt | awk '{print $2}')"
    eval "echo \"Elements of array_${i} are \${array_${i}[@]}\" "
done < pins.list

我已从for循环更改为while,这是另一种读取文件的方法,而不是使用cat(另外,请检查#!行)。< / p>