Tcl + Check file existence

c0d3rs picture c0d3rs · Nov 15, 2010 · Viewed 34.2k times · Source

I'm trying to check if a file exists or not in Tcl, but I can't seem to get a true result. Even though I know it is present.

while {true} {

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

    puts "File Not copied"

    }

I always execute the File not copied line. I did a put for [file exists $file_name] and I always end up with 0. But I know for a fact that the file exists in the current directory. Any suggestions?

EDIT:

An alternative method that I'm trying to pursue, is that when I do a dir using the tcl script. I will get an output of all the files in the directory. I just need to match my file with the list outputted and satisfy the if when a match was found ...

I'm executing the script from Location A, but using the script to telnet to Location B. When I do a file exists, it checks Location A itself. This is my problem ... since I need to be searching in Location B ...

Answer

Donal Fellows picture Donal Fellows · Nov 16, 2010

The file exists command always works with local filesystems. If you want to check whether a remote system has a file, you'll have to exp_send it some instructions to do the check for you. Unfortunately, I can't quite tell what you're talking to from your description, so I can't actually advise how to do it.

And you want a break after that puts "File copied" line otherwise it will all go round the loop again. You probably don't want that!