0'dan söz eden tüm posterler doğru ve 1 tanesi yanlıştır. Bu durumda, 1 true'dur ve $(())
tarafından neden olunan aritmetik değerlendirme bağlamından dolayı olağan boolean anlamında 0 yanlıştır. $(())
iç ==
operasyon Bash dönüş durumların eşitliği değil
, bu ikisi de "yanlış" ve "gerçek" değişken olarak kabul edilir, ancak henüz bağlı değil verilen harfleri kullanarak sayısal eşitlik, gerçekleştirir Eğer böyle bir şey istemek doğru ve yanlış dönüş durumunu karşılaştırmak istiyorsanız
$ echo $((true))
0
$ echo $((false))
0
: henüz atanmış bir değere sahip beri 0 olarak yorumlanır,
true
TRUE=$?
false
FALSE=$?
if (($TRUE == $FALSE)); then echo TRUE; else echo FALSE; fi
Ama nedenini emin değilim sen yapmak istersin onun.
DÜZENLEME: Orijinal yanıttaki parçanın "true" ve "false" dizeleri olarak yorumlanmasıyla ilgili kısmı düzeltildi. Onlar değil. Değişkenler olarak kabul edilirler ancak henüz onlara bağlı hiçbir değeri yoktur.
, '$ (($ DOĞRU == $ YANLIŞ))' bildirir yankı Beklediğiniz gibi "0". echo $ (($ TRUE == $ TRUE)) ve echo $ (($ FALSE == $ FALSE)) 'da' 1'i rapor edecektir. – zostay
Bu doğru. Boole olarak "doğru" ve "yanlış" lar bashta var olmazlar ve bu yüzden $ (()) ' – Sorpigal
+1 ve -1 'in diğer tüm cevaplarına özel bir anlamı yoktur. soruyu okuyun? – Random832