You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中将数字拆分为字符数组并获取最后一位

如何在Bash中获取数字的最后一位数字

嘿,我明白你遇到的问题了——想用Bash循环获取变量i的最后一位数字,但之前尝试的字符数组方法没起作用对吧?先给你说清楚为什么${i[@]}没用:这个语法是用来遍历数组元素的,但你的i只是单个字符串/数字变量,所以它只会原样输出i的值,根本不会拆分字符。

下面给你两种简单可靠的方法,不管你的数字是几位都能搞定:

方法1:字符串截取(通用,适合数字/带字符的场景)

Bash支持直接对字符串进行截取操作,要取最后一位,可以用:

last_digit=${i: -1}

这里注意:后面的空格很重要!如果写成${i:-1},那就是给变量i设置默认值(如果i为空就返回1),完全不是我们要的效果。

如果你觉得空格容易忘,也可以用另一种写法,先获取字符串长度再减1:

last_digit=${i:${#i}-1}

${#i}会返回i的字符长度,比如i=123时长度是3,3-1=2,截取从索引2开始的字符(Bash字符串索引从0开始),也就是最后一位。

方法2:取模运算(仅适合纯数字场景)

如果你的i确定是纯数字,用数学取模更直接——任何数字对10取余,得到的就是最后一位:

last_digit=$((i % 10))

比如12 % 10 = 2,15 % 10 =5,完美符合你的需求。

完整示例代码

把这两种方法放到你的循环里试试:

#!/bin/bash
for i in {10..15}
do
    # 字符串截取法
    str_last=${i: -1}
    # 取模法
    mod_last=$((i % 10))
    
    echo "当前数字:$i"
    echo "字符串截取得到最后一位:$str_last"
    echo "取模运算得到最后一位:$mod_last"
    echo "------------------------"
done

运行后输出会是:

当前数字:10
字符串截取得到最后一位:0
取模运算得到最后一位:0
------------------------
当前数字:11
字符串截取得到最后一位:1
取模运算得到最后一位:1
------------------------
...(以此类推到15)

方法选择建议

  • 如果i可能包含非数字字符(比如i=num123),优先用字符串截取,确保拿到最后一个字符;
  • 如果i是纯数字,取模运算更高效,逻辑也更清晰。

内容的提问来源于stack exchange,提问作者Lucia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:29:37