为什么输入行会返回不同的值?

时间:2020-06-19 21:55:16

标签: tclsh

我正在运行tclsh脚本,并且试图确定终端窗口中的行数。当我从命令行运行命令时,我会得到正确的数字(70)。

$ tclsh
% tput lines
70

但是当我从puts / exec内部运行命令时,我得到了另一个数字(24)。

$ tclsh
% puts [exec tput lines]
24

我要寻找的号码是70 ...我在做什么错了?

1 个答案:

答案 0 :(得分:1)

使用:

[exec tput cols >@ stdout]

原因是,如果没有> @重定向,Tcl将使用管道读取 来自孩子的标准输出(产生[exec]的结果)。因此,tput的 ioctl()在管道上操作,该管道获得不相关的默认几何 到周围的终端。

参考: https://groups.google.com/g/comp.lang.tcl/c/bX8wjU8Z2To

$ tput lines
43
$ tput cols
87
$ tclsh
% tput lines
43
% tput cols
87
% exec tput lines
24
% exec tput cols
80
% exec tput lines >@stdout
43
% exec tput cols >@stdout
87
%