请考虑以下几点:
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/