(почти) ничего не будет работать до тех пор, вы используете фигурные скобки. Лучшее предложение использовать команду списка:
set confCmds [list command1 command2 $cmd_ts]
Я говорю (почти), потому что вы можете использовать SUBST делать подстановку переменных на confCmds, но это не совсем то, что вы хотите, и что таит в себе опасность. То, что вы хотите, это список слов, один или несколько из которых могут быть определены переменной. Именно это дает вам такое решение.
Если вы хотите, вы можете выкладывать свои команды на более чем одной строке с помощью обратной косой черты:
set confCmds [list \
command1 \
command2 \
$cmd_ts \
]
Это решение предполагает, что вы хотите, это список TCL. Это может быть или не быть тем, что вы хотите, все зависит от того, как вы относитесь к этим данным вниз по течению.
В комментарии вы написали, что то, что вы действительно хотите это строка из новой строки разделенных элементов, в этом случае вы можете просто использовать двойные кавычки, например:
set confCmds "
command1
command2
$cmd_ts
"
Это даст вам строку с несколько строк, разделенных символами новой строки. Будьте осторожны, пытаясь рассматривать это как список команд (т. Е. Не делать «foreach foo $ confCmds»), потому что он может терпеть неудачу в зависимости от того, что находится в $ cmd_ts.
на самом деле я хочу command1, command2 и $ cmd_ts быть разделены новым line, но используя список или concat, я получаю их вместе в виде строки с разделителями пробелов.Любая идея, как достичь этого, когда я сталкиваюсь с трудным временем решения \ n: P –
Вы можете использовать двойные кавычки вместо фигурных скобок в вашем исходном примере. Пока вы не будете рассматривать эти данные как список Tcl, все будет в порядке. Другим вариантом является преобразование только что созданного списка tcl в строку элементов, разделенных новой строкой, с помощью [join $ confCmds \ n] –