将参数从命令行传递到tcl脚本

pyp*_*278 5 bash tcl

我有一个TCL脚本,有许多参数定义为参数.我打算创建一个作业文件,我可以使用不同的参数组合执行.tcl脚本,无需人工干预.

我的意思是:

作业文件(run.sh):

./main.tcl arg1 arg2 arg3 arg4 
./main.tcl arg1 arg3 arg5
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够将run.sh中提到的每个运行的命令行参数数组"argv"作为数组传递到main.tcl脚本中,以便在执行之前在脚本中相应地设置选项.

有没有办法链接.sh脚本和.tcl脚本?

tin*_*lyx 6

每个在线文档:

可以将数字传递到脚本并由脚本使用的方法如下.

argc argv argv0

所有Tcl脚本都可以访问三个预定义变量.$ argc - 传递给脚本的参数的数量项.$ argv - 参数列表.$ argv0 - 脚本的名称.

要使用参数,可以按如下方式重写脚本.

if { $argc != 2 } {
    puts "The add.tcl script requires two numbers to be inputed."
    puts "For example, tclsh add.tcl 2 5".
    puts "Please try again."
} else {
    puts [expr [lindex $argv 0] + [lindex $argv 1]]
    }
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这样写就相当于命令注入漏洞,请尝试使用 `tclsh that-script '[exec sh -c {id>/dev/tty; 例如 echo 1}]' 2`。更好的是`puts [expr {[lindex $argv 0] + [lindex $argv 1]}]`。 (2认同)