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

  • Floortile83

    Floortile83

    16 Ocak 2010
  • TastyTuts | Creative video tutorials by Gareth David

    TastyTuts |

    6 Temmuz 2011
  • Top Gear

    Top Gear

    27 Mart 2006