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

  • kylelandry

    kylelandry

    9 AĞUSTOS 2007
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008
  • YAN TV

    YAN TV

    20 EKİM 2011