如何在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

相關文章
相關標籤/搜索