SORU
14 HAZİRAN 2011, Salı


Nasıl bir bash betiği numaraları ekleyebilir miyim

Bu bash script var ve 16 satırında bir sorun vardı. Nasıl satır 15 önceki sonuç alıp ekleyebilirim değişken satır 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

CEVAP
14 HAZİRAN 2011, Salı


Tamsayılar için:

  • Kullanın arithmetic expansion: $((EXPR))

    num=$((num1   num2))
    num=$(($num1   $num2))       # also works
    num=$((num1   2   3))        # ...
    num=$[num1 num2]             # old, deprecated arithmetic expression syntax
    
  • Dış expr yardımcı kullanarak. Bu çok eski sistemler için gerekli olduğunu unutmayın.

    num=`expr $num1   $num2`     # whitespace for expr is important
    

Kayan nokta için:

Bash doğrudan bu destek değil, ama dış araçları bir çift vardır:

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

Bilimsel gösterim de (örn: 2.5e 2) kullanabilirsiniz


Ortak tuzaklar:

  • Zaman ayarı değişken, olamaz boşluk iki tarafından =, aksi takdirde bunu yapacak gücü kabuk yorumlar ilk kelime olarak adı uygulama çalıştırmak için (örn: num= num)

    num= 1num =2

  • bc expr ayrı bir değişken olarak her numara ve operatör bekliyoruz, boşluk çok önemlidir. 18* 4*gibi süreç değişkenleri edemezler.

    num=`expr $num1 $num2`

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChrisCrossMedia

    ChrisCrossMe

    17 EYLÜL 2009
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011
  • YouChewBu

    YouChewBu

    26 Ocak 2009