2010-11-15 80 views
4

我試圖檢查一個文件是否存在或不在Tcl中,但我似乎無法得到真正的結果。儘管我知道它存在。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結尾。但是我知道這個文件存在於當前目錄中。有什麼建議麼?

編輯:

我想要追求的另一種方法是,當我使用TCL腳本做dir。我將得到目錄中所有文件的輸出。我只需要匹配我的文件與輸出的列表,並滿足if當發現匹配...

我正在執行從位置A的腳本,但使用腳本telnet到位置B.當我做一個文件存在,它會檢查位置A本身。這是我的問題...因爲我需要在位置B搜索...

+0

然後你需要發出ssh/ftp/whatever_protocol命令來查詢遠程目錄。 – 2010-11-15 23:18:17

回答

7

file exists命令始終適用於本地文件系統。如果你想檢查一個遠程系統是否有文件,你將不得不exp_send它的一些說明來做你的檢查。不幸的是,我無法從你的描述中完全告訴你在說什麼,所以我實際上不能建議如何去做。

而且你想要一個break之後puts "File copied"行,否則它將全部再次循環。你可能不需要那個!

+0

感謝您的回覆Donal。關於代碼,我只是寫了一些粗略的僞代碼來提示我在說什麼。我會研究你建議的這兩種方法。 – c0d3rs 2010-11-16 14:44:57

0

Donal合理地提到了exp_send作爲訪問遠程文件系統的工具。但如果這是一個FTP上下文,我更喜歡基於Tcl的FTP庫的(pure-Tcl-without-Expect)解決方案;我覺得這更便於攜帶,易於理解和簡潔。