5

我正在尝试检查 Tcl 中是否存在文件,但我似乎无法得到真实的结果。尽管我知道它存在。

while {true} {

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

    puts "File Not copied"

    }

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

编辑:

我试图追求的另一种方法是,当我dir使用 tcl 脚本时。我将得到目录中所有文件的输出。我只需要将我的文件与输出的列表if匹配并满足找到匹配项的时间...

我正在从位置 A 执行脚本,但使用脚本远程登录到位置 B。当我确实存在文件时,它会检查位置 A 本身。这是我的问题......因为我需要在位置 B 搜索......

4

2 回答 2

9

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

而且你想要break在那条puts "File copied"线之后,否则它会再次循环。你可能不想要那个!

于 2010-11-16T09:38:45.870 回答
0

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

于 2010-11-21T15:06:39.797 回答