Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我为 bash 找到了类似的答案,但对于 sh 却没有,所以我在问。
我有一个 $STRING,其中包含类似“Jun01 Jun02 Jun03 Jun04”的内容。我想把它放入一个数组中,使得 ${ARRAY[0]} 是“Jun01”,${ARRAY[1]} 是“Jun02”,等等。
我怎样才能做到这一点?谢谢你。
您不能真正在标准 (Bourne) shell 中本地处理数组。
有关更多详细信息,请参见此处。
C shell (47.5)、awk (33.11)、Korn shell 和其他一些 UNIX 命令解释器具有内置的数组支持。标准的 Bourne shell 没有,尽管它的命令行是一种数组,您可以使用 set ( 44.19 ) 命令存储它 - 并通过 $1 、 $2 等获取存储的值。
我会尝试使用 bash(如您所见)或更全功能的脚本语言,例如Perl(毫无疑问,其他人会推荐他们的最爱!)
sh 没有数组,但以下 hack 通常就足够了:
set $STRING for x; do eval "ARRAY_$((i++))='$x'"; done
现在,(假设i未设置或以 0 开头),$ARRAY_0具有值Jun01、$ARRAY_1isJun02等。
i
$ARRAY_0
Jun01
$ARRAY_1
Jun02
您可以摆脱位置参数:它们类似于数组。
set -- $STRING # no quotes here echo $1 echo $2 # etc