Linux下使用Shell脚本获取终端宽度的解决方法

An ·
更新时间:2024-11-13
· 965 次阅读

获取终端大小时候的学习

在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠

发现for循环会导致执行缓慢

解决方法:

使用yes 命令

sed '50q' 显示50行

tr -d '\n' 删除 \n

多次重复输入相同字符可用yes

yes "2" | sed '50q' | tr -d '\n'

想法来自:打印100个连续的符号,不用循环

--------------------------------------------------------------------------------

stty size (获取终端大小)

stty size|awk '{print $2}'

最终命令:

(指令版) shellwidth=`stty size|awk '{print $2}'` # 输出横杠 yes "-" | sed $shellwidth'q' | tr -d '\n' ---------------------------------------------------- (function版) function getshellwidth() # 这里可以去掉function { echo `stty size|awk '{print $2}'` #return 0 # return是返回 成功或者失败的 #调用的时候只需要上面的输出就行, 他会将标准输出return回来 } # 这块有个疑问 就是如下面的写法会报错 Inappropriate ioctl for device # yes "-" | sed `getshellwidth`'q' | tr -d '\n' ---------------------------------------------------- # 输出横杠 shellwidth=`getshellwidth` yes "-" | sed $shellwidth'q' | tr -d '\n' (直接显示一行横杠)# 推荐使用本方法 printLine() { # 进行判断 if [ ! $1 ]; then # 没有参数则直接输出 - outword='-' else # 将输入的参数1 赋值给outword outword=$1 fi shellwidth=`stty size|awk '{print $2}'` yes $outword | sed $shellwidth'q' | tr -d '\n' } printLine # 直接调用 后面可以跟参数

备注: 获取宽度后最好是将宽度定义为一个新的变量,或者是function 这样获取比较方便

优雅的判断

${COLUMN:-} 

例如:    ${COLUMN:-1} 

如果COLUMN是空变量,或者变量不存在,返回-后面的内容,如果变量有值返回这个值。

备注:

$COLUMNS 在linux 也可以显示行宽,但是放在bash 脚本中 则需要使用 source shell.sh 的格式去编写

 因为source 可以直接利用当前环境变量 而bash则是另起一个环境,无法输出(猜想)

总结

以上所述是小编给大家介绍的Linux下使用Shell脚本获取终端宽度的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持!

您可能感兴趣的文章:Linux Crontab Shell脚本实现秒级定时任务的方法分享9个实战及面试常用Linux Shell脚本编写linux shell脚本对未定义变量的判断以及if的用法详解linux环境下编写shell脚本实现启动停止tomcat服务的方法在linux shell脚本中root切换到普通用户执行脚本或命令的方法Linux中shell脚本获取当前工作目录的方法Linux通过Shell脚本命令修改密码的两种方式Linux启动jar包的shell脚本使用Linux shell脚本实现FTP定时执行批量下载指定文件Linux crontab定时执行Shell脚本需要执行特定的命令时解决思路



shell脚本 shell

需要 登录 后方可回复, 如果你还没有账号请 注册新账号