我已经和TCL合作了一段时间了,我花了很长时间尝试做以下事情(看起来很简单,我认为它应该是,但我无法做到正确):
我需要通过tcl脚本执行外部程序.为此,我使用exec命令.为了使用这个外部程序,我需要输入可变数量的文件.如果我直接从cmd窗口调用此程序,它将类似于:
C:\>myprogram -i file1 -i file2 -i file3 (etc., etc.)
Run Code Online (Sandbox Code Playgroud)
但是,当试图通过tcl以动态/可变的方式实现它时,我遇到了麻烦.我这样做的方法是在一些变量myvar中存储-i filex我需要的所有" "(在循环中完成),然后将其作为参数传递给exec命令.它看起来像:
exec myprogram $myvar
Run Code Online (Sandbox Code Playgroud)
这样做显然会产生一些问题,因为这个myprogram无法"看到"myvar.我猜测存在某种隐藏的终结符或不同类型的参数的冲突,这使得exec命令最终只"看到"myprogram.
所以,我的问题是,有没有人知道如何在调用中插入变量参数exec?
我对tcl中switch的使用有疑问.主要是,我想知道是否有可能做出类似的事情:
switch myvar {
list1 {
puts "myvar matches contents of list1"; }
list2 {
puts "myvar matches contents of list2"; }
default {
puts "myvar doesn't match any content of any list"; }
}
Run Code Online (Sandbox Code Playgroud)
在这里,list1和list2可以是包含不同文件名称的列表或字符串数组.
如果没有进行非常详细的正则表达式搜索,这是否可行?
谢谢!
我一直只使用Tcl语言几天,但我也习惯用其他语言编程; 但是,我无法在任何地方找到任何关于如何设置当前目录或路径的参考,因为它可以使用命令cd以批处理语言完成.
我需要这个,因为我使用Tcl来集成几个不同的程序.其中一个存在识别当前路径的一些明显问题.如果我从批处理文件执行它,之前使用cd和该程序所在的文件夹设置路径,一切正常.
但是,如果不使用批处理文件而是使用基本的Tcl脚本来调用此程序(我使用exec),它似乎找不到它需要的文件夹或文件,很可能是因为它使用的相对路径映射不正确.
有没有人知道Tcl批量cd的等效版本?
谢谢!!