2010-11-15 3661 views
4

我试图检查一个文件是否存在或不在Tcl中,但我似乎无法得到真正的结果。尽管我知道它存在。Tcl +检查文件是否存在

while {true} { 

    if { [file exists $file_name] == 1} {    
     exp_send "copy file.txt destination \r" 
     puts " File copied!" 
    } 

    puts "File Not copied" 

    } 

我总是执行文件未复制的行。我做了一个[file exists $file_name],我总是以0结尾。但是我知道这个文件存在于当前目录中。有什么建议么?

编辑:

我想要追求的另一种方法是,当我使用TCL脚本做dir。我将得到目录中所有文件的输出。我只需要匹配我的文件与输出的列表,并满足if当发现匹配...

我正在执行从位置A的脚本,但使用脚本telnet到位置B.当我做一个文件存在,它会检查位置A本身。这是我的问题...因为我需要在位置B搜索...

+0

然后你需要发出ssh/ftp/whatever_protocol命令来查询远程目录。 – 2010-11-15 23:18:17

回答

7

file exists命令始终适用于本地文件系统。如果你想检查一个远程系统是否有文件,你将不得不exp_send它的一些说明来做你的检查。不幸的是,我无法从你的描述中完全告诉你在说什么,所以我实际上不能建议如何去做。

而且你想要一个break之后puts "File copied"行,否则它将全部再次循环。你可能不需要那个!

+0

感谢您的回复Donal。关于代码,我只是写了一些粗略的伪代码来提示我在说什么。我会研究你建议的这两种方法。 – c0d3rs 2010-11-16 14:44:57

0

Donal合理地提到了exp_send作为访问远程文件系统的工具。但如果这是一个FTP上下文,我更喜欢基于Tcl的FTP库的(pure-Tcl-without-Expect)解决方案;我觉得这更便于携带,易于理解和简洁。