首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KSH错误:'$‘意外

KSH错误:'$‘意外
EN

Stack Overflow用户
提问于 2012-10-19 17:32:14
回答 1查看 289关注 0票数 1

下面的KSH脚本会导致错误“第4行出现语法错误:'$‘意外”

代码语言:javascript
复制
!#/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的内容如下:

代码语言:javascript
复制
pins.list (Arrays)
==================
block
group
range


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

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 19:28:43

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

代码语言:javascript
复制
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 (同样,请检查您的#!行)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12971321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档