例如,2211需要显示6,但我找不到可以帮助我的命令。我已经试过剪了,但一次只能剪一个。
在Debian中工作。试试这个:
#!/bin/bash
number="2211"
result=0
for (( i=0; i<${#number}; i++ )); do
echo "number[${i}]=${number:$i:1}"
result=$(( result + ${number:$i:1} ))
done
echo "result = ${result}"
使用while
+read
循环。
#!/usr/bin/env bash
str=2211
while IFS= read -rd '' -n1 addend; do
((sum+=addend))
done < <(printf '%s' "$str")
declare -p sum
如果你的bash足够新,而不是declare
echo "${sum@A}"
如果您有bash
5.2版(迄今为止的最新版本(:
shopt -s patsub_replacement
n=2211
echo $((${n//?/+&}))
数学变体可能还有更优雅的变体
sum=0
num=2211
n=${#num}
for ((i=n-1; i>=0; i--)); {
a=$((10**i))
b=$((num/a))
sum=$((sum+b))
num=$((num-(b*a)))
echo $i $a $b $num $sum
}
3 1000 2 211 2
2 100 2 11 4
1 10 1 1 5
0 1 1 0 6
$ echo $sum
6
另一种(Shellcheck clean(方法是用算术代替字符串操作:
#! /bin/bash -p
declare -i num=2211 sum=0
while (( num > 0 )); do
sum+=num%10
num=num/10
done
echo "$sum"