2011-03-17 31 views
7

Kabuk betiğinde nasıl karşılaştırılır?Kabuk betiğinde nasıl karşılaştırılır?

Veya aşağıdaki komut neden hiçbir şey yazdırmıyor?

rakamlarla
x=1 
if[ $x = 1 ] then echo "ok" else echo "no" fi 
+0

ilk satırı: ** $ x = 1 ** – Hossein

+5

İhtiyacınız a; sonra] ve 'dan bir boşluk varsa [$ x = 1]; sonra echo "tamam"; başka yankı "hayır"; fi ' – Sergio

+0

@Sergio' bash: beklenmedik belirtecin yanında 'sözdizimi hatası verir' '' –

cevap

8

,

x=1 
if [ $x -eq 1 ] 
then 
    echo "ok" 
else 
    echo "no" 
fi 

Ve diğerleri için

değil = == kullanmak -eq, -ne ... eşittir, eşit değildir için, ... kullanın.

+0

-eq ve ile; sonra] bash: beklenmedik belirtecin yanında sözdizimi hatası verir \ 'o zaman ' –

+0

Sadece benim' == 'to' -eq' için changin ile hala burada hiçbir şey basmaz .. –

+0

Evet, aslında bir "boşluk izin vermelisin" "önce ve sonra" ["... Sadece geçerli bir kod düzenledim. –

1

Bu dile bağlıdır. Bash ile == operatörünü kullanabilirsiniz. Diğer yöntemle, -eq-lt-gt'u eşittir, lowerthan, greaterthan için kullanabilirsiniz.

$ x=1 
$ if [ "$x" == "2" ]; then echo "yes"; else echo "no"; fi 
no 

Düzenleme: eklenen alanlarda == civarı ve 2.

+1

"==" etrafında boşluklara ihtiyacınız var - komutunuzu "[" $ x "==" 2 "]' ile deneyin ve bunun doğru olduğunu da göreceksiniz. "[" $ X "=" 1 "]' veya '[$ x -eq 1]' veya bash '[[$ x == 1]]' veya '((x == 1))' ile –

+0

Bu düzeltme, manuel girinti sorunu için teşekkürler. Ama [] çalışıyor. – Aif

4

Kısa kısayol çözümü AND ve OR ile test:

x=1 
(($x == 1)) && echo "ok" || echo "no" 
İlgili konular