Я не уверен, что $name
может быть в этом контексте (это действительно необычное имя для переменной, и использование имен переменных обычно является плохой идеей), но я предполагаю, что выв этом случае вы пытаетесь установить step
на xyz
, вы можете поместить это в свой скрипт:
apply {{} {
# For each pair of values in the arguments (after the script name)
global argv
foreach {key value} $argv {
# Safety-check: if the key starts with a hyphen...
if {[string match -* $key]} {
# ... strip the leading hyphen(s)
set varname [string trimleft $key "-"]
# ... bind that global var name to a local name
upvar 1 $varname var
# ... and set the variable to the value we've got.
set var $value
}
}
}}
Это сделано в apply
, чтобы мы не загрязняли глобальное пространство именсо всеми нашими рабочими переменными (key
, value
, varname
и var
) и потому, что нам действительно не нужно создавать процедуру для чего-то, что мы собираемся делать только один раз.
Это не безопасный фрагмент кода, ни в коем случае, но это полезный и гибкий способ заставить что-то работать.
В общем, синтаксический анализ командной строкиАргументы могут занять совсем немного времени, чтобы понять все правильно, и есть различные пакеты, которые могут помочь, но это действительно важно, когда пишется код для запуска другими людьми.Когда это только для вас, вы можете быть очень небрежным и выполнить работу за несколько минут.