我有这个Bash脚本,在第16行有一个问题。 如何获取第15行之前的结果并添加 变成第16行中的变量?

#!/bin/bash

num=0
metab=0

for ((i=1; i<=2; i++)); do
    for j in `ls output-$i-*`; do
        echo "$j"

        metab=$(cat $j|grep EndBuffer|awk '{sum+=$2} END { print sum/120}') (line15)
        num= $num + $metab   (line16)
    done
    echo "$num"
 done

当前回答

#!/usr/bin/bash

#integer numbers
#===============#

num1=30
num2=5

echo $(( num1 + num2 ))
echo $(( num1-num2 ))
echo $(( num1*num2 ))
echo $(( num1/num2 ))
echo $(( num1%num2 ))

read -p "Enter first number : " a
read -p "Enter second number : " b
# we can store the result
result=$(( a+b ))
echo sum of $a \& $b is $result # \ is used to espace &


#decimal numbers
#bash only support integers so we have to delegate to a tool such as bc
#==============#

num2=3.4
num1=534.3

echo $num1+$num2 | bc
echo $num1-$num2 | bc
echo $num1*$num2 |bc
echo "scale=20;$num1/$num2" | bc
echo $num1%$num2 | bc

# we can store the result
#result=$( ( echo $num1+$num2 ) | bc )
result=$( echo $num1+$num2 | bc )
echo result is $result

##Bonus##
#Calling built in methods of bc 

num=27

echo "scale=2;sqrt($num)" | bc -l # bc provides support for calculating square root

echo "scale=2;$num^3" | bc -l # calculate power

其他回答

整数:

使用算术展开:$((EXPR)) Num =$(num1 + num2)) num=$(($num1 + $num2)) #同样有效 Num =$((num1 + 2 + 3)) #… num=$[num1+num2] #过时的算术表达式语法 使用外部expr实用程序。注意,只有非常老的系统才需要这样做。 num= ' expr $num1 + $num2 ' # expr的空格很重要


对于浮点数:

Bash并不直接支持这一点,但是你可以使用一些外部工具:

num=$(awk "BEGIN {print $num1+$num2; exit}")
num=$(python -c "print $num1+$num2")
num=$(perl -e "print $num1+$num2")
num=$(echo $num1 + $num2 | bc)   # Whitespace for echo is important

您也可以使用科学符号(例如,2.5e+2)。


常见的陷阱:

在设置变量时,=的两边不能有空格,否则将迫使shell将第一个单词解释为要运行的应用程序的名称(例如,num=或num) Num = 1 Num =2 BC和expr期望每个数字和运算符作为单独的参数,因此空格很重要。它们不能处理像3+ +4这样的参数。 = ' expr $num1+ $num2 '

我总是忘记语法,所以我来到谷歌搜索,但我从来没有找到一个我熟悉的:P。这对我来说是最干净的,更符合我对其他语言的期望。

i=0
((i++))

echo $i;
 #!/bin/bash
read X
read Y
echo "$(($X+$Y))"

适用于MacOS

#!/bin/bash

sum=0
for (( i=1; i<=5; i++ )); do
    sum=$(echo "$sum + 1.1" | bc) # bc: if you want to use decimal
done
echo "Total: $sum"

我也很喜欢这个方法。有更少的杂乱:

count=$[count+1]