我希望在我的脚本中有一个很大的选项列表。用户将提供仅与这些选项之一匹配的输入。我希望能够有多个不同的选项运行相同的命令,但我似乎无法让OR运行。以下是我认为它应该是什么样的,关于如何使a或b线工作的任何想法?
switch -glob -- $opt {
"a" || "b" {
puts "you selected a or b, probably not both"
}
default {
puts "Your choice did not match anything"
}
}
答案 0 :(得分:11)
您可以使用-
作为案例的正文,直至下一个正文,如Tcl Manual中所述:
如果一个体被指定为“ - ”,则表示下一个体 模式也应该用作这种模式的主体(如果是下一个模式) 模式也有一个“ - ”的身体,然后使用身体后,和 等等)。此功能可以在其中共享单个主体 几种模式。
此外,如果您的选项是一大串连续字符,那么您将不得不使用通配符来勾选您的选项模式,或者只有当opt
只包含一个选项时,您的情况才会匹配:
switch -glob -- $opt {
"*a*" -
"*b*" {
puts "you selected a or b, probably not both"
}
default {
puts "Your choice did not match anything"
}
}
答案 1 :(得分:2)
还要这样做:
switch -regexp -- $opt {
a|b {
puts "you selected a or b, probably not both"
}
default {
puts "Your choice did not match anything"
}
}
注意:" a | b"
之间没有空格答案 2 :(得分:1)
有两种方法。来自the switch documentation examples:“使用全局匹配和直通体是替代编写具有替换的正则表达式......”