我正在尝试检查Tcl中是否存在文件,但我似乎无法获得真实的结果。即使我知道它存在。
while {true} {
if { [file exists $file_name] == 1} {
exp_send "copy file.txt destination \r"
puts " File copied!"
}
puts "File Not copied"
}
我总是执行File not copied行。我为[file exists $file_name]
做了一个put,我总是以0结束。但我知道该文件存在于当前目录中。有什么建议吗?
修改
我正在尝试的另一种方法是,当我使用tcl脚本执行dir
时。我将获得目录中所有文件的输出。我只需要将我的文件与输出的列表匹配,并在找到匹配时满足if
...
我正在从位置A执行脚本,但是使用脚本telnet到位置B.当我存在文件时,它会检查位置A本身。这是我的问题......因为我需要在位置B中搜索...
答案 0 :(得分:7)
file exists
命令始终适用于本地文件系统。如果要检查远程系统是否有文件,则必须exp_send
给它一些指示以进行检查。不幸的是,我无法从你的描述中说出你在说什么,所以我实际上无法建议如何去做。
你希望在break
行之后puts "File copied"
,否则它将全部绕过循环。你可能不希望这样!
答案 1 :(得分:0)
Donal合理地提到 exp_send 作为访问远程文件系统的工具。如果这是一个FTP上下文,我更喜欢基于Tcl的FTP库的(纯Tcl-without-Expect)解决方案;我发现这更容易,更容易理解,更简洁。