我在截断字符串时创建了数组:
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]}
什么都不打印。
使用数组有什么问题?
答案 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