(presque) rien ne fonctionnera aussi longtemps que vous utilisez des accolades. La meilleure suggestion est d'utiliser la commande list:
set confCmds [list command1 command2 $cmd_ts]
Je dis (presque) parce que vous pouvez utiliser subst pour effectuer la substitution variable sur confCmds, mais ce n'est pas vraiment ce que vous voulez et qui est semée d'embûches. Ce que vous voulez, c'est une liste de mots, dont un ou plusieurs peuvent être définis par une variable. C'est précisément ce que la solution ci-dessus vous donne.
Si vous voulez, vous pouvez répartir les commandes sur plus d'une ligne en utilisant la barre oblique inverse:
set confCmds [list \
command1 \
command2 \
$cmd_ts \
]
Cette solution suppose que ce que vous voulez une liste de tcl. Cela peut ou peut ne pas être ce que vous voulez, tout dépend de la façon dont vous traitez ces données en aval.
Dans un commentaire que vous avez écrit que ce que vous voulez vraiment est une chaîne d'éléments séparés saut de ligne, dans ce cas, vous pouvez simplement utiliser des guillemets doubles, par exemple:
set confCmds "
command1
command2
$cmd_ts
"
Cela vous donnera une chaîne plusieurs lignes séparées par des retours à la ligne. Faites attention d'essayer de traiter ceci comme une liste de commandes (ie: ne faites pas 'foreach foo $ confCmds') car cela peut échouer selon ce qui est dans $ cmd_ts.
en fait, je veux commande1, commande2 et cmd_ts $ à être séparés par un nouveau ligne, mais en utilisant la liste ou la concaténation je les rassemble comme une chaîne délimitée par un espace.Toute idée de comment y arriver car je suis confronté à un temps difficile à affronter. \ N: P –
Dans votre exemple original, vous pouvez utiliser des guillemets au lieu d'accolades. Tant que vous ne traiterez pas ces données en tant que liste Tcl, tout ira bien. Une autre option consiste à convertir la liste tcl que vous venez de créer en une chaîne d'éléments séparés par un saut de ligne avec [join $ confCmds \ n] –