• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Shell中实现飞行文字效果

Shell中实现飞行文字效果

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了shell的实现,shell的简单实现,c语言实现shell,shell,shell脚本编程大全等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

大家肯定见过WEB页面上飞行字的效果,但是在Linux系统中,特别是bash命令行模式下,如何实现echo出来的字符串以飞行的特效展现出来呢?
这个特效不见得实用,但偶尔拿来自娱自乐或炫耀一番倒是个不错的方法,呵呵,下面以一段Shell Script代码来给大家讲解如何实现……

#!/bin/bash


[ -z $1 ] && echo "Input is invalid! " && exit 1

txt=($(cat $1|sed 's/ \+/_/g'))

lines=${#txt[@]}

max_show=10   #最多显示行数(超过总行数则设为总行数)

[ ${max_show} -gt ${lines} ] && max_show=${lines}

hlt_line=3  #高亮显示位置(不超过总行1/2,设为3实际是第4行)

[ ${hlt_line} -gt $(( lines / 2 )) ] && hlt_line=$(( lines / 2 ))

sTTY=$(stty -g)  #保存终端设置


clear

echo -ne "\033[?25l" #隐藏光标


spaces() {

local i j n

i=0; n=0

for (( j=0; j <= ${lines}; j++ ));do

[ $i -lt ${#txt[$j]} ] && (( i = ${#txt[$j]} )) && (( n = $j ))

done

echo ${txt[$n]}|sed 's/./  /g'

}


space_line=$(spaces)


#传递的参数是欲显示行的序数:show 1 表示第一行高亮显示

show() {

local i j text crt_line

j=$1


for (( i=0; i < max_show; i++ ));do

crt_line=$(( j + i - hlt_line ))

if [ $i -eq ${hlt_line} ] && [ ${crt_line} -ge 0 ] && [ ${crt_line} -le ${lines} ];then

text="\033[;32m"${txt[${crt_line}]}"\033[0m"

elif [ ${crt_line} -lt 0 ] || [ ${crt_line} -gt ${lines} ];then

text=${space_line}

else

text=${txt[${crt_line}]}

fi

echo -ne "\033[$((i+3));0H${space_line}"

echo -ne "\033[$((i+3));6H${text}"

done

}


#测试

for (( j = 0; j < lines + hlt_line +1 ; j++ ));do

show $j

sleep 1

done
</div>

恢复默认设置方法:

echo ""

stty ${sTTY} #恢复终端设置

echo -e "\033[?25h\033[0;0H" #恢复光标
</div>

</div>

您可能想查找下面的文章:

  • Shell中实现飞行文字效果
  • shell实现FizzBuzzWhizz问题示例(拉勾网面试题)

相关文章

  • 浅谈安装ORACLE时在Linux上设置内核参数的含义
  • shell脚本编程之if语句学习笔记
  • Linux Shell简介
  • linux文本分析awk基础命令介绍(8)
  • shell 使用数组作为函数参数的方法(详解)
  • Shell字符串比较相等、不相等方法小结
  • 消耗CPU资源的shell脚本
  • linux修改目录和文件权限的简单命令解释
  • linux 中vim的用法讲解
  • 图片批量压缩大小脚本分享

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • linux 随机密码生成工具mkpasswd详解及实例
    • awk中NR和FNR的区别小结和实例演示
    • Shell编程中while与for的区别及用法详解
    • 详谈Linux开发中常见段错误问题的原因及分析
    • 浅谈:linux cron 计划任务常用符号小结
    • linux下python3连接mysql数据库问题
    • sed删除文件中的一行内容的脚本代码
    • shell脚本实现监控shell脚本的执行流程及变量的值
    • 实现shell终端代码分享(可用户登录 实现系统命令)
    • Linux shell脚本基础学习详细介绍(完整版)第1/2页

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有