2013-03-05 17 views
5

Komut dizimde geniş bir seçenekler listesi istiyorum. Kullanıcı, yalnızca bu seçeneklerden biriyle eşleşen girdileri verecek. Birden çok farklı seçeneğin aynı komutları çalıştırabilmesini istiyorum ama OR'leri çalışırken göremiyorum. Aşağıda nasıl görüneceğini düşündüğüm şey, a veya b çizgisinin nasıl işleneceği hakkında herhangi bir fikir var mı?Bir veya tcl anahtar deyiminde nasıl kullanırım?

switch -glob -- $opt { 
    "a" || "b" { 
     puts "you selected a or b, probably not both" 
    } 
    default { 
     puts "Your choice did not match anything" 
    } 
} 

cevap

10

- bir kasa için gövde olarak, sonraki gövdeye geçmek için kullanabilirsiniz. Tcl Manual açıklandığı gibi: bir vücut olarak belirtilirse

“-” önümüzdeki desen de varsa önümüzdeki model için vücudu da (bu model için organ olarak kullanılması gerektiğini ifade eder “-” gövdesi daha sonra vücut kullanılır ve vb.). Bu özellik, tek bir gövdeyi çeşitli desenleri paylaşmayı mümkün kılar. seçenekleriniz concatentated karakterlerin büyük bir dize varsa da

, sen joker karakterler ile opsiyon desenleri için bağlayıcının sahip olacak ya da opt tek bir seçenek sunar içerdiğinde sizin vakaları yalnızca eşleşir:

switch -glob -- $opt { 
    "*a*" - 
    "*b*" { 
     puts "you selected a or b, probably not both" 
    } 
    default { 
     puts "Your choice did not match anything" 
    } 
} 
+0

teşekkürler, bu Tam olarak bilmem gereken şey. – SuperTetelman

0

Ayrıca, bu çalışma:

switch -regexp -- $opt { 
    a|b { 
     puts "you selected a or b, probably not both" 
    } 
    default { 
     puts "Your choice did not match anything" 
    } 
} 

Dikkat: arasında hiçbir boşluk "a | b"

İlgili konular