为什么 tput 行 return 不同的值?

why does tput lines return different values?

我正在 运行 运行一个 tclsh 脚本,我正在尝试确定终端 window 中的行数。当我 运行 来自命令行的命令时,我得到正确的数字 (70)。

$ tclsh
% tput lines
70

但是当我从 puts/exec 中 运行 命令时,我得到一个不同的数字 (24)。

$ tclsh
% puts [exec tput lines]
24

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

使用:

[exec tput cols >@ stdout]

原因是没有 >@ 重定向,Tcl 使用管道读取 从 child 的标准输出(产生 [exec] 的结果)。因此 tput 的 ioctl()s 在管道上操作,它获得一个默认的几何无关 到周边航站楼。

参考: 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
%