0

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

$ tclsh
% tput lines
70

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

$ tclsh
% puts [exec tput lines]
24

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

4

1 回答 1

1

利用:

[exec tput cols >@ stdout]

原因是没有 >@ 重定向,Tcl 使用管道从孩子的标准输出中读取(产生 [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
%
于 2020-10-07T11:52:33.433 回答