微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

tclsh - getopt 和 switch-case

如何解决tclsh - getopt 和 switch-case

我推荐 here 来编写我的 getopt 来处理输入选项。

使用以下命令运行脚本

$ tclsh t2.tcl -O /dir/o -B /dir/b  

想要的结果:

/dir/o,/dir/o,/dir/b
Odir is /dir/o
/dir/o,/dir/b
Bdir is /dir/b 

但是我得到了这个错误的结果

/dir/o,/dir/b
err...
/dir/b,/dir/b
err...

是的,$arg(${i}),$arg(O),$arg(B) 那些 vaule 似乎没有问题,

但不能匹配大小写条件。

我的代码有什么问题?


完整代码

# filenat2.tcl
package require cmdline

set para {
  {O.arg "" "Output Dir"}
  {B.arg "" "Build Dir"}
}

array set arg [cmdline::getoptions argv ${para}]

set requiredParameters {O B}
foreach i ${requiredParameters} {
  if {$arg(${i}) == ""} {
    error "Missing required parameter: -${i}"
  } else {
    puts "$arg(${i}),$arg(B)" #check
    switch $arg(${i}) {
      $arg(O) {
        puts "Odir is $args(O)"
      }
      $arg(B) {
        puts "Bdir is $args(B)"
      }
      default {
        puts "err..."
      }
    }
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。