在 Tcl 中用换行符连接字符串

Concatenating strings with newlines in Tcl

我无法在 tcl 中连接具有新行的字符串。新行将被忽略。有办法克服这个问题吗?

% set pst_data "Power states :-\n"
Power states :-

% set pst_data [concat $pst_data "vcc1\t 1 0 1\n"]
Power states :- vcc1     1 0 1
% set pst_data [concat $pst_data "vcc2\t 2 2 0\n"]
Power states :- vcc1     1 0 1 vcc2      2 2 0
% 

我希望输出每次都换行

它在 manual 中提到它:

This command joins each of its arguments together with spaces after trimming leading and trailing white-space from each of them.

您可以尝试使用 append 代替:

% set pst_data "Power states :-\n"
Power states :-

% append pst_data "vcc1\t 1 0 1\n"
Power states :-
vcc1     1 0 1

% append pst_data "vcc1\t 1 0 1\n"
Power states :-
vcc1     1 0 1
vcc1     1 0 1

%

当然 append 是完成此操作的正确方法,但在 Tcl 中,您甚至可以像这样执行 concat:

% set pst_data "Power states :-\n"
Power states :-

% set pst_data "${pst_data}vcc1\t 1 0 1\n"
Power states :-
vcc1     1 0 1