Есть ли способ передать параметры в скрипт в TCL, который запускается с использованием eval source? - PullRequest
0 голосов
/ 02 июня 2010

У меня есть скрипт, который вызывает:

 eval source \{$scriptfile\}

где $ scriptfile - это другой скрипт TCL. Есть ли способ передать параметры в скрипт? Я хотел бы сделать что-то вроде:

set sampleData "ID=14678934"
eval source \{$scriptfile\} $sampleData 

Я знаю, что это запрещено, но есть ли способ передать данные в сценарий, который выполняется с использованием eval source?

Ответы [ 2 ]

5 голосов
/ 03 июня 2010

Это ужасная практика, чтобы начать. Гораздо чище вызывать процесс, который находится внутри сценария, который вы используете.

source script.tcl  ;# defines proc run_script_with_data
run_script_with_data $data
3 голосов
/ 02 июня 2010

Решение дано в Tclers Wiki , в следующих статьях: источник с аргументами и SrcFile .

Решение, которое мне нравится больше всего, srcfile:

proc srcfile { filename args } {
  global argv

  set argv $args
  source $filename
}

Единственным недостатком этого подхода является то, что он изменит argv, поэтому вам нужно убедиться, что он вам не понадобится в оставшейся части скрипта, или выполнить резервное копирование и восстановить его.

...