Trong mã của tôi Tôi đang sử dụng các biến môi trường, nhưng nếu nó (env.var) không tồn tại, tôi nhận được thông báo lỗi NAME_ENV_VAR: không có biến đó, và kịch bản của tôi ngừng thực thi. Ví dụ, trong dòngLàm cách nào để tránh lỗi: Không có biến môi trường như vậy?
myeval $env($File)
tôi nhận được một lỗi:
can't read "env(NIKE_TECH_DIR)": no such variable
while executing
"myeval $env($File)"
(procedure "chooseRelevantFiles" line 39)
invoked from within
"chooseRelevantFiles $::GlobalVars::reqStage"
(file "/vobs/tavor/src/Scripts/ReproduceBug.tcl" line 575)
Làm thế nào tôi có thể tránh được lỗi này và tiếp tục thực hiện kịch bản của tôi không?
+1 Nói chung tôi thích để tránh kiểm tra nếu một cái gì đó trong hệ thống tồn tại vì điều kiện chủng tộc, nhưng trong trường hợp này nó có lẽ là thích hợp –
Tôi thích 'upvar 0 :: env ($ thứ) myvar; nếu {[info tồn tại myvar]} {... 'thành ngữ hơi tốt hơn. Nhưng tất cả phụ thuộc vào sở thích cá nhân. – kostix
@jk .: Bắt lỗi là chậm hơn nhiều so với tránh nó - xử lý lỗi của Tcl là _purposefully_ không phải siêu nhanh - nhưng ':: env' là một trường hợp đặc biệt làm chậm bất cứ điều gì bạn làm (vì đó là trạng thái toàn cầu quá trình có thể được thay đổi ngoài tầm kiểm soát của Tcl). –