如何在bash脚本中添加数字

我有这个bash脚本,我在第16行遇到了问题。如何获取第15行的先前结果并将其添加到第16行的变量中? html

#!/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

#1楼

我也很是喜欢这种方法,不那么杂乱: node

count=$[count+1]

#2楼

我老是忘记语法,因此我来谷歌,但后来我找不到我熟悉的那个:P。 这对我来讲是最干净的,对我在其余语言中所指望的更为真实。 shell

i=0
((i++))

echo $i;

#3楼

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

#4楼

另外一种可移植的POSIX兼容方式,用于bash ,能够在.bashrc定义为一个函数,方便全部算术运算符。 bash

addNumbers () {
    local IFS='+'
    printf "%s\n" "$(( $* ))"
}

并在命令行中调用它,由于, 函数

addNumbers 1 2 3 4 5 100
115

咱们的想法是使用输入字段分隔符(IFS) ,这是bash一个特殊变量,用于扩展后的单词拆分以及将行拆分为单词。 该函数在本地更改值以使用分词字符做为sum运算符+spa

记住IFS局部改变,并没有考虑对默认效果IFS的功能范围以外的行为。 man bash页面的摘录, 命令行

shell将IFS的每一个字符视为分隔符,并将其余扩展的结果拆分为这些字符上的单词。 若是未设置IFS,或者其值正好是默认值,则会忽略先前扩展结果的开始和结束的,以及序列,而且不在开头或结尾的任何IFS字符序列用于分隔话。 code

"$(( $* ))"表示传递给+的参数列表,而后使用printf函数输出和值。 该函数能够扩展为其余算术运算添加范围。 htm


#5楼

您应该将metab声明为整数,而后使用算术评估 get

declare -i metab num
...
num+=metab
...

有关更多信息,请参阅https://www.gnu.org/software/bash/manual/html_node/Shell-Arithmetic.html#Shell-Arithmetic

相关文章
相关标签/搜索