请考虑以下几点:

me@mine:~$ cat a.sh
#!/bin/bash
echo "Lines: " $LINES
echo "Columns: " $COLUMNS
me@mine:~$ ./a.sh
Lines:
Columns:
me@mine:~$ echo "Lines: " $LINES
Lines:  52
me@mine:~$ echo "Columns: " $COLUMNS
Columns:  157
me@mine:~$

变量$LINES$COLUMNS是shell变量,而不是环境变量,因此不会导出到子进程(但当我调整xterm窗口的大小时,即使从远程位置通过ssh登录,它们也会自动更新)。有没有办法让我的脚本知道当前的终端大小?
编辑:
我需要这个解决方案:vi(以及vim、less和类似的命令)每次使用它时都会把屏幕弄乱。更改终端不是一个选项,因此我正在寻找解决方法(向下滚动$LINES行肯定不是完美的解决方案,但至少比丢失前一个屏幕要好)

最佳答案

您可以从tput获取行和列:

#!/bin/bash

lines=$(tput lines)
columns=$(tput cols)

echo "Lines: " $lines
echo "Columns: " $columns

关于bash - 脚本中丢失的LINES和COLUMNS环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54432098/

10-13 07:20