2017-09-18 6 views
0

Je voudrais concaténer certaines variables basées sur des chaînes et je veux chacune d'entre elles dans une nouvelle ligne. Cependant, je ne peux pas trouver la bonne façon d'écrire le code. C'est ce que j'ai essayé:concat des variables dans les nouvelles lignes avec TCL

set mensaje "Error: esta atenuacion: $att dB\n" 

gset listaMensajes [concat [gget listaMensajes] "$mensaje"] 

set mensaje "Error: esta atenuacion: $att dB\n" 

gset listaMensajes [concat [gget listaMensajes] "$mensaje"] 

puts "[gget listaMensajes]" 

La variable $ att prend différentes valeurs dans les différentes parties du code.

J'ai aussi essayé:

gset listaMensajes [concat [gget listaMensajes] "\n" "$mensaje"] 

mais aucun d'entre eux travaillent; Je reçois les messages dans la même ligne

Répondre

1

La commande concat désactive les espaces entre ses arguments, donc ce n'est pas très utile ici. Ce que vous voulez probablement, c'est la commande join. Puisque vous utilisez des commandes non standard, je ne peux pas recréer votre cas, mais dire que foo est une commande qui retourne une liste de chaînes:

join [foo] \n 

retourne une chaîne constituée des chaînes renvoyées par foo, avec un chaaracter de nouvelle ligne joignant chaque paire de cordes.

Bien sûr, fonctionne aussi si vous avez une liste de chaînes dans une variable appelée bar:

join $bar \n 

Ou si vous construisez une liste dans une substitution de commande:

join [list "foo bar" "baz qux"] \n 

Documentation: concat, join

+0

Merci beaucoup! Cela a fonctionné! Dans mon exemple serait gset listaMensajes [rejoindre [list "[gget listaMensajes]" "$ mensaje"] \ n] – itd