Tcl + 检查文件是否存在

8
我正在尝试在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] 进行了put操作,但始终得到0。但我确信该文件存在于当前目录中。有什么建议吗?

编辑:

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

我从A地方执行脚本,但使用脚本来telnet到B地方。当我执行文件是否存在时,它会检查A地方本身。这就是我的问题...因为我需要在B地方进行搜索...


然后您需要发出ssh/ftp/任何协议命令来查询远程目录。 - glenn jackman
2个回答

11

file exists 命令始终与本地文件系统一起使用。如果要检查远程系统是否有一个文件,您需要exp_send一些指令来为您执行检查。不幸的是,从您的描述中,我无法确定您正在与哪个系统交互,因此我无法建议如何执行。

在那个puts "File copied"行之后加上一个 break才可以避免再次循环。您可能不希望这样做!


感谢回复Donal。关于代码,我只是写了一些粗略的伪代码来表达我的意思。我会研究你提出的这两种方法。 - c0d3rs

0

Donal 合理地提到了 exp_send 作为访问远程文件系统的工具。但如果这是一个 FTP 上下文,我更喜欢基于 Tcl 的 FTP 库的解决方案(纯 Tcl,不需要 Expect);我认为这更具可移植性、易于理解和简洁。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接