所以我一直在试图找到一个答案这一点,并无法在互联网上找到答案。我需要检查是否存在环境变量。我以为我有正确的代码,但它不断返回false。TCL检查环境变量
if { [info exists ::env(USER)] } {
RAT::LogMsg INFO "Found USER"
} else {
RAT::LogMsg INFO "Nope!"
}
任何想法?
所以我一直在试图找到一个答案这一点,并无法在互联网上找到答案。我需要检查是否存在环境变量。我以为我有正确的代码,但它不断返回false。TCL检查环境变量
if { [info exists ::env(USER)] } {
RAT::LogMsg INFO "Found USER"
} else {
RAT::LogMsg INFO "Nope!"
}
任何想法?
你有正确的代码,测试在tclsh的:
% if {[info exists ::env(USER)]} {puts "found $::env(USER)"}
found strobel
%
的问题必须在您的环境。
您可能想要检查实际设置的环境变量;我不认为USER
是保证的之一。
RAT::LogMsg INFO "Got these env-vars: [lsort [array names ::env]]"
如果puts stdout
作品在你的环境,你可以尝试做:(该parray
命令是漂亮,打印阵列的过程)
parray ::env
要获得当前用户名可靠,请查看tcl_platform
array's user
element。该数组是由Tcl在内部生成的(对于相关的基本操作系统API而言),而不是通过查看环境变量来生成,并且该特定元素始终存在于Tcl 8.4中。
RAT::LogMsg INFO "Username is $::tcl_platform(user)"
我刚刚注意到,文件是错误的:它说,user
元素来自USER
和/或LOGNAME
环境变量。 It doesn't,并且不在8.5和8.6中。 (这肯定是我的错误,当我解决这个问题时,我忘了更新代码。)OOops!
试过'[info exists :: env(USERNAME)]'?您可以使用parray env来查看数组的所有元素及其值。 – Jerry