Linux中如何拆分数字各位并求和?例:2211需输出6
数字各位求和的Linux命令方案
方法1:使用awk处理
awk可直接遍历字符串每一位并累加求和:
echo 2211 | awk '{s=0; for(i=1;i<=length($0);i++) s+=substr($0,i,1); print s}'
原理:通过length($0)获取数字长度,循环用substr截取每一位字符转为数值后累加到变量s,最后输出总和。
方法2:sed拆分后用bc求和
先用sed给每一位数字间添加+符号,再通过bc执行加法运算:
echo 2211 | sed 's/./&+/g; s/+$//' | bc
原理:s/./&+/g给每个字符后追加+,s/+$//移除末尾多余的+,最后由bc计算拼接后的加法表达式。
方法3:纯Bash脚本实现
无需外部工具,仅用Bash内置的字符串操作完成:
num=2211; sum=0; while [ -n "$num" ]; do sum=$((sum + ${num:0:1})); num=${num:1}; done; echo $sum
原理:循环截取数字的第一位加到总和sum,随后移除数字的第一位,直到数字为空时输出最终结果。
内容的提问来源于stack exchange,提问作者GJO
相关产品推荐
相关产品推荐

