对于脚本语言,有个最基本的功能就是命令行解析,那么就涉及到argv
和argc
这类系统定义的变量,下面简单的做个demo
#!/usr/bin/tclsh
proc print_help_screen {} {
puts [join {
"cmd1 subcmd1 Exec first Cmd"
"cmd2 subcmd1 Exec second Cmd"
"help show help"
} "\n"]
}
puts "argv0: $argv0"
puts "argc: $argc"
puts "argv0 abs: [file normalize $argv0]"
for {set i 0} {$i < [llength $argv]} {incr i} {
set cmd [lindex $argv $i]
puts "cmd$i: $cmd"
}
puts "-------------"
for {set i 0} {$i < $argc} {incr i} {
set cmd [lindex $argv $i]
puts "cmd$i: $cmd"
}
print_help_screen
输出的效果为:
fh@Feihu-3 learn % ./parse_redisconf.tcl arg1 arg2 arg3 arg4
argv0: ./parse_redisconf.tcl
argc: 4
argv0 abs: /Users/fh/fh_data/workspace/tcl/learn/parse_redisconf.tcl
cmd0: arg1
cmd1: arg2
cmd2: arg3
cmd3: arg4
-------------
cmd0: arg1
cmd1: arg2
cmd2: arg3
cmd3: arg4
cmd1 subcmd1 Exec first Cmd
cmd2 subcmd1 Exec second Cmd
help show help
fh@Feihu-3 learn %
argc
表示真正的参数个数,不包括脚本名称;- 脚本名称使用
argv0
表示 - 每个参数可以通过
[lindex $argv $i]
获取