如何将数字拆分为字符数组

时间:2018-05-14 04:22:54

标签: bash shell scripting

我有点陷入困境。我有一个像这样的for循环:

#!/bin/bash
for i in {10..15}
do

我想获得数字的最后一位数,所以如果我是12,我想得到2.虽然我的语法有困难。我已经读过我应该将它转换为字符数组,但是当我做类似的事情时:

j=${i[@]}
echo $j

我没有得到1 0 1 1 1 2等等......我得到10,11,12 ......我怎么得到数字才能分开,这样我才能得到i的最后一个,当我不知道有多少数字会弥补我(例如,它可能是1,或10,或100等)?

3 个答案:

答案 0 :(得分:4)

Trick将$ i视为一个字符串。

for i in {10..15}; do j="${i: -1}"; echo $j; done

当然,如果您不想:

,则无需分配给变量
for i in {10..15}; do echo "${i: -1}"; done

答案 1 :(得分:1)

这个awk命令可以解决您的问题:

awk '{print substr($0,length,1)}' test_file

我假设这些数字保存在文件test_file

如果您想使用for循环:

for i in `cat test_1`
do
echo $i |tail -c 2
done

答案 2 :(得分:1)

使用This

GNU shell parameter expansion答案是最明智的方法,我猜。

但是,您也可以使用the double parenthesis construct,它允许在Bash中对变量进行C风格操作。

for i in {10..15}
do
 (( j =  i % 10 )) # modulo 10 always gives the ones' digit
 echo $j
done