所以我一直试图找到一个答案,但在互联网上找不到答案。我需要检查环境变量是否存在。我以为我有正确的代码,但它一直都是假的。
if { [info exists ::env(USER)] } {
RAT::LogMsg INFO "Found USER"
} else {
RAT::LogMsg INFO "Nope!"
}
有什么想法吗?
答案 0 :(得分:6)
您可能想要检查实际设置的环境变量;我不认为USER
是保证之一。
RAT::LogMsg INFO "Got these env-vars: [lsort [array names ::env]]"
如果puts stdout
适用于您的环境,您可以尝试执行以下操作:
parray ::env
(parray
命令是一个漂亮打印数组的过程。)
要正确获取当前用户名 ,请查看tcl_platform
array's user
element。该数组由Tcl内部生成(好,通过探测相关的基本OS API),而不是通过查看环境变量,并且该特定元素始终至少存在于Tcl 8.4。
RAT::LogMsg INFO "Username is $::tcl_platform(user)"
我刚刚注意到文档错误:它表示user
元素来自USER
和/或LOGNAME
个环境变量。 It doesn't,并且至少不是8.5和8.6。 (这绝对是我的错误。当我修复它时,我忘了更新代码。哎呀!)
答案 1 :(得分:0)
你有正确的代码,在tclsh中测试:
% if {[info exists ::env(USER)]} {puts "found $::env(USER)"}
found strobel
%
问题必须出在您的环境中。