2017-06-15 50 views
0

我已经从文件中读取输入,并且文件中的每一行都将以'|'结尾。我想循环到一个数组,以便在后面的代码中使用。这是我到目前为止,但通过数组循环不起作用。Unix:将这些值附加到动态数组中以供将来使用

#!/bin/ksh 

TEMP="abc1|abc2|abc3 1;abc4 1" 
rest=$TEMP 
field=() 

while [ -n "$rest" ] 
do 
     str=${rest%%\|*} 
     field+=("$str") 
     [ "$rest" = "${rest/\|/}" ] && rest= || rest=${rest#*\|} 
     #print $str 
done 

for x in ${field} 
do 
     echo $x 

done 

print $ str正常,但当我循环获取值时,我没有得到值。 任何帮助来解决这个问题。

谢谢。

回答

1

失去了一些东西......

for x in "${field[@]}"; do echo $x; done 
+0

这是他需要做的加上'[@]'和引用它,如什么。 – karakfa

+0

请解释它或在答案中强调它......它被标记为太短。 (先前的评论被删除)。 –