所以我一直在試圖找到一個答案這一點,並無法在互聯網上找到答案。我需要檢查是否存在環境變量。我以爲我有正確的代碼,但它不斷返回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