【问题标题】:TCL: Check file existence by SHELL environment variableTCL:通过 SHELL 环境变量检查文件是否存在
【发布时间】:2012-09-21 23:12:55
【问题描述】:

我有一个 shell 环境变量 PATH_TO_DIR,我想在 TCL 脚本中检查文件 $PATH_TO_DIR/target.txt 是否存在。

我目前的解决方案是:

catch {exec /usr/local/bin/tcsh -c "echo  $PATH_TO_DIR/target.txt" } result

if {![file exists $result]} {
  puts "ERROR: the file $result is not exists"
}

我相信还有更优雅的方式。
只用TCL命令怎么解决?

【问题讨论】:

    标签: tcl


    【解决方案1】:
    set path_to_dir $::env(PATH_TO_DIR)
    set file_name [file join $path_to_dir "target.txt"]
    set native_file_name [file nativename $file_name]
    if {![file exists $native_file_name]} {
      puts "ERROR: the file $native_file_name does not exist"
    }
    

    【讨论】:

    • 如果您对文件执行任何 exec 调用或特定于平台的操作,文件 nativename 会很方便。但在这种情况下,它并不是严格需要的。
    • +1。关于文件命令的更多描述在这里:tcl.tk/man/tcl8.5/tutorial/Tcl25.html
    • Brian,感谢您的解决方案,但这是最简单的解决方案。如果我从文件中读取行并且其中一行包含带有环境变量的字符串,我不知道它到底是什么,但我可以将它放入某个局部变量中,会发生什么情况。在这种情况下 exec /usr/local/bin/tcsh -c "echo $local_variable/ target.txt" 仍然对我有用,但它仍然不优雅。附言我知道我的主要问题没有很好地阐述。对此感到抱歉。
    • 嗨,没问题。我真的不明白你的新问题。也许如果你开始一个新问题并更深入地解释它?
    • 你好 Brian,更新问题的链接是:stackoverflow.com/questions/12225508/…
    猜你喜欢
    • 2012-04-28
    • 2011-05-10
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2013-08-12
    • 2019-09-18
    • 2017-08-30
    相关资源
    最近更新 更多