整数变量bash脚本的总和

时间:2018-01-16 15:49:42

标签: bash shell

如何用bash脚本做整数和我用for读取一些变量,我需要做总和。

我写了这样的代码:

Read N 
Sum=0
for ((i=1;i<=N;i++))
do
   read number 
   sum=sum+number
done
echo $sum

4 个答案:

答案 0 :(得分:3)

使用算术命令((...))

#! /bin/bash
read n
sum=0
for ((i=1; i<=n; i++)) ; do
   read number 
   ((sum+=number))
done
echo $sum

答案 1 :(得分:0)

#!/bin/bash

echo "Enter number:"
read N
re='^[0-9]+$'
if ! [[ ${N} =~ ${re} ]]
then
    echo "Error. It's not a number"
    exit 1
fi
Sum=0
for ((i=1;i<=N;i++))
do
sum=$((${sum} + ${i}))
done
echo "${sum}"

答案 2 :(得分:0)

嗯,不是直接的bash解决方案,但你也可以使用seqdatamashhttps://www.gnu.org/software/datamash/):

#!/bin/bash

read N
seq 1 $N | datamash sum 1

它非常简单(并且有其局限性),但它确实有效。您可以在seq上使用其他选项,以获得不同于1的增量,依此类推。

答案 3 :(得分:0)

也可以将变量声明为declare -i的整数。然后,对该变量的任何赋值都将作为算术表达式进行求值:

#!/bin/bash

declare -i sum=0                           
read -p "Enter n: " n

for ((i=1; i<=n; i++)) ; do
   read -p "Enter number #$i: " number
   sum+=number #sum=sum+number would also work
done

echo "Sum: $sum"

有关详细信息,请参阅[expr.log.or]。首选使用算术命令((...)),请参阅Bash Reference Manual

$ declare -i var1=1
$ var2=1

$ var1+=5
$ echo "$var1"
6

$ var2+=5
$ echo "$var2"
15

这可能会让人感到困惑,因为+=的行为会有所不同,具体取决于变量的属性。因此,最好明确地使用((...))进行算术运算。