在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
由于
答案 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>