使用从bash中的字符串解析的数组

时间:2015-08-13 15:45:50

标签: linux bash ubuntu-14.04

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

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]}

什么都不打印。

使用数组有什么问题?

1 个答案:

答案 0 :(得分:0)

您可以使用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