为什么 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
%
我正在 运行 运行一个 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
%