我正在创建一个shell脚本,它从命令行获取一个数字(长度不重要)并将它们的数字加在一起。我以为我拥有它,但它不起作用,如果命令输入为345,则显示“0 + 3 + 4 + 5”,或者当我使用expr添加它们时显示变量。
#!/bin/bash
sum=0
i="$(expr length $1)"
s=$1
for i in $(seq 0 $((${#s} - 1))); do
value=${s:$i:1}
typeset -i value
sum=$sum+$value
done
echo $sum
当我用sum ='expr $ sum + $ value'
替换它时也不起作用任何想法?
答案 0 :(得分:4)
您要找的是sum=$(($sum+$value))
。
答案 1 :(得分:0)
#!/bin/bash
expr $(echo $1| sed 's/./& + /g;s/..$//')
例如,如果参数为12345
,则会将其转换为字符串1 + 2 + 3 + 4 + 5
,并使用expr
对其进行评估。