#tcl
#tcl
Вопрос:
Я написал один сценарий TCL, но у меня есть одна проблема при создании строковой переменной, как показано ниже:
set a 100
set b "this is variable[$a]"
Я хочу, чтобы b присваивалось с помощью b = « this is variable[100]
«, но я получил ошибку:
недопустимое имя команды 100
Пожалуйста, помогите мне это исправить :-(.
Комментарии:
1. См. 12 синтаксических правил Tcl , в частности правило # 7
Ответ №1:
Вам просто нужно ее избежать:
set a 100
set b "this is variable[$a]"
Комментарии:
1. технически нам нужно только экранировать открывающую скобку.
2. Большое вам спасибо. Моя проблема заключалась в том, что я использовал инструмент, который совпадает с TCL, но он не принимает [и] как строку «[]».
3. Похоже, вы неправильно понимаете, что происходит. Дело не в том, что Tcl не принимает «[]». Проблема в том, что «[что-то]» в Tcl означает, что вы хотите запустить функцию / proc / command
something
, а затем вставить ее в строку. Итак, чтобы Tcl не думал, что вы хотите выполнитьsomething
, вам нужно сообщить ему, что[
это не означает, что вы хотите вызвать функцию / команду / proc.
Ответ №2:
Другие возможности (но лучше избегать скобок):
set b [format {this is variable[%d]} $a]
set b [subst -nocom -noback {this is variable[$a]}]
Комментарии:
1. Большое вам спасибо. Я исправил это, используя set b [format {это переменная [%d]} $a] .