我有一个号码,比如说
number=5684398
我希望将其数字存储到数组coolarray
的字段中,如下所示:
coolarray[0]=5
coolarray[1]=6
coolarray[2]=8
coolarray[3]=4
coolarray[4]=3
coolarray[5]=9
coolarray[6]=8
我该怎么办?
答案 0 :(得分:3)
我将在纯bash和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;需要避免在每次运行时将结果数组堆叠到前一个数组。