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

  • bobono1baby

    bobono1baby

    14 AĞUSTOS 2011
  • HBO

    HBO

    17 Mayıs 2006
  • pain975

    pain975

    27 NİSAN 2008