【问题标题】:Using arrays parsed from string in bash在bash中使用从字符串解析的数组
【发布时间】:2015-08-13 15:45:50
【问题描述】:

我在截断字符串时创建了数组:

IN=123.11.1
arr=$(echo $IN | tr "." "\n")

打印所有内容:

for x in $arr
        do
        echo "[$x]"
        done

有输出:

[123]
[11]
[1]

这是意料之中的。

但是当我尝试打印 0 元素时:

echo ${arr[0]}

我有输出:

123 11 1

还有

echo ${arr[1]}

什么都不打印。

使用数组有什么问题?

【问题讨论】:

    标签: linux bash ubuntu-14.04


    【解决方案1】:

    您可以使用read 来通过自定义IFS 正确读取它:

    IN=123.11.1
    IFS=. read -ra arr <<< "$IN"
    

    否则;

    IFS=. arr=($(printf "%s" "$IN"))
    

    验证数组内容:

    declare -p arr
    declare -a arr='([0]="123" [1]="11" [2]="1")'
    

    你的任务:arr=$(echo $IN | tr "." "\n") 甚至没有创建任何数组。它正在创建一个名为arr 的简单变量。要验证您是否可以随时使用:

    declare -p arr
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 2017-07-16
      • 1970-01-01
      相关资源
      最近更新 更多