SORU
20 Aralık 2011, Salı


Neden $((true == false)) bash 1 değerlendirir?

Neden bash aşağıdaki davranış var mı?

echo $((true == false))
1

Bu baskı olacağını düşünmüştüm 0 ama 1 yazdırır.

Bu da aşağıdaki gerçekleri ile karışık

> echo $((true))
0
> echo $((false))
0
> echo $((true == true))
1
> echo $((false == false))
1

CEVAP
20 Aralık 2011, Salı


Bütün posterleri doğru 0 ve 1 olmak yanlış olmaktan söz noktasını kaçırmış. Bu durumda, 1 doğrudur ve 0 aritmetik değerlendirme kapsamında $(()) neden dolayı her zamanki boolean anlamda yanlıştır.

== çalışma içinde $(()) değil eşitlik dönüş durumları Bash, gerçekleştirdiği sayısal eşitlik kullanarak harfleri verilen bir "sahte" ve "gerçek" kabul edilir değişken, ama henüz bağlı, hem yorumlanır 0 günden bu yana, hiçbir değeri henüz atanmış:

$ echo $((true))
0
$ echo $((false))
0

Eğer iade durumu doğru ve yanlış karşılaştırmak istiyorsanız gibi bir şey istiyorum:

true
TRUE=$?
false
FALSE=$?
if (( $TRUE == $FALSE )); then echo TRUE; else echo FALSE; fi

Ama, bunu yapmak için neden isteyeyim emin değilim.

DÜZENLEME:"Gerçek" ve "" izlenimini uyandırdı dizeler. sahte hakkında orijinal Cevap Bölümü düzeltildi Değildir. Değişken kabul edilir, ama hiçbir değeri henüz onlarla ilişkili.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • Missouri Star Quilt Company

    Missouri Sta

    18 ŞUBAT 2009