我正在运行tclsh脚本,并且试图确定终端窗口中的行数。当我从命令行运行命令时,我会得到正确的数字(70)。
$ tclsh
% tput lines
70
但是当我从puts / exec内部运行命令时,我得到了另一个数字(24)。
$ tclsh
% puts [exec tput lines]
24
我要寻找的号码是70 ...我在做什么错了?
答案 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
%