将数字字符串的数字传递给bash中的数组

时间:2014-11-11 19:46:15

标签: bash

我有一个号码,比如说

number=5684398

我希望将其数字存储到数组coolarray的字段中,如下所示:

coolarray[0]=5
coolarray[1]=6
coolarray[2]=8
coolarray[3]=4
coolarray[4]=3
coolarray[5]=9
coolarray[6]=8

我该怎么办?

4 个答案:

答案 0 :(得分:3)

我将在纯parameter expansions中做些什么:

number=5684398
len=${#number}
for ((i=0; i<len; i++)); do arr[$i]=${number:$i:1}; done 

答案 1 :(得分:2)

您可以使用fold -w1将输入字符串分解为每个字符:

number=5684398
coolarray=( $(fold -w1 <<< "$number") )

printf "%s\n" "${coolarray[@]}"
5
6
8
4
3
9
8

答案 2 :(得分:0)

使用shell算法:

$ for (( i=${#number}-1; i>=0; i-- )); do ary+=( $((number / 10**i % 10)) ); done
$ printf "%s\n" "${ary[@]}"
5
6
8
4
3
9
8

答案 3 :(得分:0)

这个简单的单行怎么样:

number=5684398
unset coolarray; while read -n1 a; do coolarray+=($a); done <<< $number

echo ${coolarray[@]}
5 6 8 4 3 9 8

说明:Bash内置&#34;阅读&#34;可以使用&#34; n1&#34;一次取一个字符。数组追加结构+ =()用于补充结果。那&#34; unset coolarray&#34;需要避免在每次运行时将结果数组堆叠到前一个数组。