2012-07-10 31 views
1

我发现类似的答案为bash,但不适用于sh,所以我问。sh脚本:字符串到数组

我有一个$ STRING,其中包含“Jun01 Jun02 Jun03 Jun04”之类的内容。我想把它放到一个数组中,使得$ {ARRAY [0]}是“Jun01”,$ {ARRAY [1]}是“Jun02”等。

我该怎么做?谢谢。

回答

2

你不能真正在标准(Bourne)shell中处理数组本身。

查看here了解更多详情。

UNIX shell命令解释器的C shell(47.5),awk(33.11),Korn shell以及其他一些 具有内置阵列支持。标准 的Bourne shell没有,虽然它的命令行是排序的数组, 您可以用集(44.19)命令存储 - 并获得到$ 1,$ 2存储值 等

我会尝试使用bash(如您已经识别的)或更全功能的脚本语言,如Perl(毫无疑问,其他人会建议他们的最爱!)

+0

好吧我想我会去bash。 – JDS 2012-07-10 17:05:27

1

sh没有数组,但以下hack通常是足够的:

set $STRING 
for x; do eval "ARRAY_$((i++))='$x'"; done 

现在,(假设i是未设置或0开始),$ARRAY_0具有价值Jun01$ARRAY_1Jun02

1

你可以逃脱的位置参数:他们是阵列等。

set -- $STRING # no quotes here 
echo $1 
echo $2 
# etc