Kako lahko dodam številke v skripto bash

Imam to bash skript in sem imel problem v vrstici 16. Kako lahko vzamem prejšnji rezultat vrstice 15 in dodam v spremenljivko v vrstici 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

Za cela števila:

  • Uporabite aritmetično razširitev: $((EXPR))

      num=$((num1 + num2))
      num=$(($num1 + $num2))       # deluje tudi
      num=$((num1 + 2 + 3))        # ...
      num=$[num1+num2] # stara, zastarela sintaksa aritmetičnega izraza
  • Uporaba zunanjega pripomočka expr. Upoštevajte, da je to potrebno le za zelo stare sisteme.

      num=``expr $num1 + $num2`` # beli prostor za expr je pomemben

Za plavajočo vejico:

Bash tega neposredno ne podpira, vendar lahko uporabite nekaj zunanjih orodij:

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

Uporabite lahko tudi znanstveni zapis (npr.: 2,5e+2)


Običajne pasti:

  • Pri nastavljanju spremenljivke na obeh straneh = ne smete imeti belih pik, sicer bo lupina prvo besedo interpretirala kot ime aplikacije, ki jo želite zagnati (npr.: num= ali num).

    num= 1 num =2

  • bc in expr pričakujeta vsako število in operator kot ločen argument, zato so beli presledki pomembni. Argumentov, kot so 3+ +4, ne moreta obdelati.

    num=`expr $num1+ $num2`

Komentarji (10)

Uporabite aritmetično razširitev $(( )).

num=$(( $num + $metab ))

Za več informacij glejte http://tldp.org/LDP/abs/html/arithexp.html.

Komentarji (2)

To lahko storite na tisoč in en način. Tukaj je eden z uporabo dc:


dc 
Komentarji (1)