我有点陷入困境。我有一个像这样的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等)?
答案 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)
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