【问题标题】:sh scripting: string to arraysh 脚本:字符串到数组
【发布时间】:2012-07-10 05:16:00
【问题描述】:

我为 bash 找到了类似的答案,但没有为 sh 找到类似的答案,所以我在问。

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

我该怎么做?谢谢。

【问题讨论】:

    标签: arrays string shell scripting sh


    【解决方案1】:

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

    更多详情请见here

    C shell (47.5)、awk (33.11)、Korn shell 和其他一些 UNIX 命令解释器具有内置的数组支持。标准 Bourne shell 没有,尽管它的命令行是一种数组, 您可以使用 set ( 44.19 ) 命令存储 - 并获取存储的值 通过 $1 、 $2 等。

    我会尝试使用 bash(如您所见)或更全功能的脚本语言,例如 Perl(毫无疑问,其他人会推荐他们最喜欢的语言!)

    【讨论】:

    • 好吧,我想我会使用 bash。
    【解决方案2】:

    sh 没有数组,但以下 hack 通常就足够了:

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

    现在,(假设 i 未设置或以 0 开头),$ARRAY_0 的值是 Jun01$ARRAY_1Jun02,等等。

    【讨论】:

      【解决方案3】:

      您可以摆脱位置参数:它们类似于数组。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-26
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 2013-04-15
        • 2014-10-24
        相关资源
        最近更新 更多