2017-01-12 3 views
0

Я вызываю скрипт (tclscript) из текущего скрипта, который видит эту ошибку «неправильное имя команды», скрипт tcl просто проверяет, установлена ​​ли правильная версия пакета или нет.

#!/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 с несколькими аргументами

+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'. –