2017-01-12 205 views
0

我是從當前腳本看到這個「無效的命令名稱錯誤」的TCL腳本只檢查包的正確版本安裝或沒有調用腳本(tclscript)。

#!/bin/tclsh 
# i am doing this for multiple packages in a loop 
set list {/usr/local/script} 
lappend list -check 
lappend list -package 
lappend list tcl-devel 
lappend list version 

[eval exec $list] 

輸出:

invalid command name " 
checking the version [ ok ] #expected output 
-checks successful!   #expected output 
" 
    while executing 
"[eval exec $list]" 

不明白爲什麼我得到這個「無效的命令名稱錯誤」誰能幫助調用從另一個TCL腳本Tcl腳本與多個arguements

+1

嘗試圍繞EVAL去掉括號...名單。 –

回答

0

的問題是,你已經成功運行了命令,已經得到了結果回去,然後嘗試,因爲你把[括號]eval exec各地使用這些結果作爲命令的名稱。要麼刪除括號,要麼在它們前面放置一個命令名稱,以便將結果用作參數。

set list … 
# Leaving out the details of how you build the list 

eval exec $list 
set list … 
# Leaving out the details of how you build the list 

set result [eval exec $list] 
puts "result is \"$result\"" 
+0

另外,如果您的Tcl版本是目前支持的版本,請將'eval exec $ list'切換到'exec {*} $ list'。 –