`
grantren
  • 浏览: 77506 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Tcl语言cmdline包

阅读更多

Cmdline包主要用来处理命令行输入。

  • getopt argvVar optstring optVar valVar
    getopt与C语言中的getopt函数类似,如果成功取出命令行参数返回1,如果所有的命令行参数已经取完返回0,发生错误返回-1。argvVar是包含了参数的字符串,一般就是argv,optstring说明了参数选项,如果参数后还有值需要输入,例如“-f abc”这样的形式,这个时候参数选项需要以“.arg”结尾。valVar说明了取到的参数值的存储,如果以“.arg”返回实际取到的参数的值,否则返回1。
  •  getKnownOpt argvVar optstring optVar valVar
    和getopt类似,但是忽略所有不认识的选项。
  •  getoptions arglistVar optlist  ? usage ?
    和getopt类似,只是一次调用就取回所有的选项。
  •  getKnownOptions arglistVar optlist  ? usage ?
    和getKnownOpt类似,只是一次调用就取回所有的选项。 

例子1:
#!/usr/local/bin/tclsh

package require cmdline

set flag_a 0
set flag_b 0
set value_r 0
set value_t ""

set usage "Usage:
                -a              set flag a
                -b              set flag b
                -r value        set flag r
                -t value        set flag t"


while {[set ok [cmdline::getopt argv {a b r.arg t.arg} opt val]] > 0} {
    switch -exact -- $opt {
        a       {set flag_a 1}
        b       {set flag_b 1}
        r       {set value_r $val}
        t       {set value_t $val}
    }
}

if { $flag_a == 1 } {
        puts "===Option a is set!==="
}
if { $flag_b == 1 } {
        puts "===Option b is set!==="
}
if { $value_r != 0 } {
        puts "===Option r is set, the value is $value_r==="
}
if { $value_t != "" } {
        puts "===Option t is set, the value is $value_t==="
}
if { $flag_a == 0 && $flag_b == 0 && $value_r == 0 && $value_t == "" } {
        puts stderr $usage
}

例子2:

#!/usr/local/bin/tclsh

package require cmdline

set options {
        {a          "This is option a!"}
        {b          "This is option b!"}
        {r.arg  ""  "This is option r, it should be r value"}
        {t.arg  -1  "This is option t, the default value is -1"}
}

set err_msg "Usage:
                -a              This is option a
                -b              This is option b
                -r value        This is option r, it should be r value
                -t valua        This is option t, the default value is -1"


array set params [cmdline::getoptions argv $options $err_msg]

set flag 0

if { $params(a) } {
        puts "===The option a is set=="
        set flag 1
}
if { $params(b) } {
        puts "===The option b is set=="
        set flag 1
}
set has_t [expr {$params(t) != -1}]
if { $has_t } {
        puts "===The option t is set==="
        puts "===$params(t)==="
        set flag 1
}
set has_r [expr {[string length $params(r)] > 0}]
if { $has_r } {
        puts "===The option r is set==="
        puts "===$params(r)==="
        set flag 1
}
if { $flag == 0 } {
        puts stderr $err_msg
}

分享到:
评论

相关推荐

    Tcl的用法详述(精)

    Tcl 语言用法详述 Tcl 语言是一种脚本语言,广泛应用于 NS2 等领域。了解 Tcl 语言的用法是非常重要的。本文将详细介绍 Tcl 语言的语法、命令、单词符号、置换机制等知识点。 Tcl 语法 一个 Tcl 脚本可以包含一个...

    Mac版本cmdline-tools工具包

    解压缩,新建目录并放到目录:~/Library/Android/sdk/cmdline-tools/latest。cd到目录执行`./sdkmanager "build-tools;32.0.0" "platforms;android-32" "platform-tools"`, #加~/.bash_profile ANDROID_HOME="/...

    cmdline.zipcmdline.zip

    C语言是底层编程的常用语言,用于创建系统工具和库。 3. **command.c** - 另一个C语言源代码文件,可能包含处理命令行参数和解析用户输入的代码。在CLI程序中,这部分代码至关重要,因为它处理用户在命令行上输入的...

    读取/proc/cmdline 文件中的标志位信息

    - 示例代码展示了如何使用Java语言来实现这一功能。 2. **读取文件内容**: - 使用 `BufferedReader` 类逐行读取文件内容。 - 将读取到的数据存储在一个 `StringBuilder` 对象中以便后续处理。 3. **解析文件...

    STVP-CmdLine.exe,自动烧录bat

    STVP-CmdLine.exe 和自动烧录bat是嵌入式开发过程中常见的工具,特别是对于基于STM32微控制器的项目。STM32是由意法半导体(STMicroelectronics)推出的一系列高性能、低功耗的ARM Cortex-M架构微控制器。STVP(ST ...

    CCmdLine命令行分析的类

    ANSI通常指的是老式的8位字符集,如MBCS(多字节字符集),而在Unicode环境下,可以处理全球各种语言的字符。`CCmdLine`类的更新表明它现在可以处理这两种情况,这意味着无论你的程序运行在何种编码环境下,它都能...

    stvp_STVP_CmdLine_labview的stm8烧录工具_

    LabVIEW,全称Laboratory Virtual Instrument Engineering Workbench,是美国国家仪器(NI)公司推出的一种图形化编程语言,常用于创建数据采集、测量和控制应用。将STVP_CmdLine与LabVIEW结合,意味着开发者已经用...

    cmdline-jmxclient.zip

    标题“cmdline-jmxclient.zip”指的是一个包含命令行界面的Java管理扩展(JMX)客户端工具,这个工具主要用于远程连接并监控Java虚拟机(JVM)以及运行在其中的应用,比如Tomcat服务器。JMX是一种Java平台提供的标准...

    cmdline-jmxclient-0.10.3.jar

    cmdline-jmxclient-0.10.3.jar

    Python库 | cmdline_provenance-0.1.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:cmdline_provenance-0.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    dpdk-cmdline源码

    在给定的"dpdk-cmdline源码"中,我们可以深入探讨DPDK的命令行接口(cmdline)工具的实现细节。 1. **DPDK Cmdline工具**:DPDK Cmdline是DPDK生态中的一部分,它提供了一个命令行界面,用户可以通过这个界面与DPDK...

    bash cmdline

    标题"bash cmdline"指的是利用Bash命令行的强大功能来实现特定的目标,即创建一个运行中的程序的命令行调试接口。这种接口允许开发者在程序运行时输入命令,对程序进行实时调试,极大地提高了开发和调试的效率。 ...

    zabbix监控tomcat所需的cmdline-jmxclient-0.10.3.jar和zbx自定义模版

    本文将深入探讨如何使用Zabbix监控Tomcat应用服务器,特别关注"cmdline-jmxclient-0.10.3.jar"工具以及相关的自定义模板。 首先,`cmdline-jmxclient-0.10.3.jar`是一个Java管理扩展(JMX)客户端,它允许通过...

    cmdline-jmxclient-0.10.3.jar.zip

    `cmdline-jmxclient-0.10.3.jar.zip` 是一个用于Tomcat性能监控的工具包,其中包含 `cmdline-jmxclient-0.10.3.jar` 文件,这是一个Java档案(JAR)文件,专门设计用于通过命令行界面与Java管理扩展(JMX)接口交互...

    sycdtk-cmdline-jmxclient-master_java_

    标题 "sycdtk-cmdline-jmxclient-master_java_" 暗示这是一个关于Java的项目,特别是涉及命令行界面(cmdline)和Java管理扩展(JMX)客户端的实现。JMX是一种在Java应用程序中管理和监控管理资源的标准机制。这个...

    cmdline-jmxclient-0.10.3.jar + zabbix tomcat监控模板

    本文将详细讲解如何利用`cmdline-jmxclient-0.10.3.jar`工具与Zabbix集成,实现对Tomcat应用服务器的高效监控。 首先,`cmdline-jmxclient-0.10.3.jar`是一个命令行Java Management Extensions (JMX)客户端,它允许...

    cmdline-jmxclient-0.10.3.jar-KafkaOffsetMonitor-assembly-0.2.0.jar

    标题中的"cmdline-jmxclient-0.10.3.jar"和"KafkaOffsetMonitor-assembly-0.2.0.jar"是两个在Java环境中使用的工具,它们与Apache Kafka的管理和监控紧密相关。让我们详细了解一下这两个工具及其背后的原理。 JMX ...

Global site tag (gtag.js) - Google Analytics