【问题标题】:element1: not found in shell unix with arrayselement1:在带有数组的shell unix中找不到
【发布时间】:2013-06-25 12:42:02
【问题描述】:

我遇到了一个问题,当我在 unix 中创建一个数组并将其置于一段时间条件下时,它不会产生结果.. 错误是:element1: not found。代码:

listArr=""
listArr=$listArr"element1\n"
listArr=$listArr"element2\n"
listArr=$listArr"element3\n"
listArr=$listArr"element4\n"
listArr=$listArr"element5\n"
listArr=$listStr"element6"   
arryIdx=0
OLD_IFS=$IFS
IFS=";"
set -A array $(echo $listArr| tr "\n" ";")
IFS=$OLD_IFS    
echo "$listArr"
echo "Elements: " ${#array[*]}
while [ $arryIdx -lt ${#array[*]} ]; 
do  
    ${array[$arryIdx]}
    (( arryIdx= $arryIdx+ 1 ))
done

谁能帮帮我?

【问题讨论】:

  • $arryIdx-lt 中缺少一个空格。
  • 哦,来吧 -1 缺少空间?无论如何,即使有空格也会出现同样的错误。
  • $listStr 必须是 $listArr
  • 不粘贴真实代码至少应该得到-1。
  • 似乎是一种奇怪的方式来设置一个数组 - 为什么不只是 set -A array element1 element2 element3 ... 而不是整个“创建一个带有换行符分隔符的变量,将换行符转换为分号,然后使用 IFS 来制作set 将其解释为“数组”的东西...?

标签: arrays unix ksh


【解决方案1】:

错误来自${array[$arryIdx]} 行 - 显然没有命令element1 等。也许你忘记了它前面的echo

【讨论】:

  • 谢谢!大约两天了,我找不到这个愚蠢的错误。谢谢
  • ksh -x yourScript 在这种情况下会很有帮助。
猜你喜欢
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多