Как добавить скобку в строковую переменную в файле TCL

#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]}]
  

Документация:
set
,
format
,
subst

Комментарии:

1. Большое вам спасибо. Я исправил это, используя set b [format {это переменная [%d]} $a] .