Tcl + Проверить наличие файла - PullRequest
5 голосов
/ 15 ноября 2010

Я пытаюсь проверить, существует ли файл в 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. Но я точно знаю, что файл существует в текущем каталоге.Любые предложения?

РЕДАКТИРОВАТЬ:

Альтернативный метод, который я пытаюсь использовать, заключается в том, что когда я делаю dir с использованием сценария tcl.Я получу вывод всех файлов в каталоге.Мне просто нужно сопоставить мой файл с выведенным списком и удовлетворить if, когда совпадение было найдено ...

Я выполняю сценарий из местоположения A, но использую сценарий для подключения по telnet к местоположению BКогда я делаю, файл существует, он проверяет само местоположение А.Это моя проблема ... так как мне нужно искать в местоположении B ...

Ответы [ 2 ]

7 голосов
/ 16 ноября 2010

Команда file exists всегда работает с локальными файловыми системами.Если вы хотите проверить, есть ли файл на удаленной системе, вам нужно exp_send сделать несколько инструкций, чтобы выполнить проверку за вас.К сожалению, я не совсем могу понять, о чем вы говорите, из вашего описания, поэтому я не могу на самом деле посоветовать, как это сделать.

И вы хотите break после этой строки puts "File copied" в противном случаевсе снова пойдет по кругу.Вы, вероятно, не хотите этого!

0 голосов
/ 21 ноября 2010

Донал разумно упомянул exp_send как средство доступа к удаленной файловой системе.Однако, если это контекст FTP, я предпочитаю (чисто-Tcl-без-Expect) решение, основанное на FTP-библиотеке Tcl;Я нахожу это более портативным, понятным и лаконичным.

...