shell 脚本有趣的运用

根据输入内容输出彩虹色的字符串附加各种效果
如果没有输入字符串,就读取 rainbow.txt 内容,再输出

#!/bin/sh#定义输出颜色的功能
rmsg() { echo -e "\033[31m$*\033[0m"; }
gmsg() { echo -e "\033[32m$*\033[0m"; }
bmsg() { echo -e "\033[34m$*\033[0m"; }# 判断参数是否大于1个,如果没有参数就读入一个字符串作为参数
if [ $# -lt 1 ];thenread -p "请输入字符串:" s
elses=$1
fi# 判断如果输入的字符小于7个就输出一首诗
if [ ${#s} -lt 7 ];thenrmsg "七绝.彩虹(平水韵)"gmsg "七绝.彩虹(平水韵)"bmsg "七绝.彩虹(平水韵)"s=`cat rainbow.txt`
fi# 定义一个数组用来记录7中颜色的值
color=(31 32 33 34 35 36 37)rainbow() {r=""  # 初始化原始输出字符串g=""  # 初始化背景色选择c=1  # 计算行数for ((i=0;i<${#s};i++))don=`expr $i % 7` #取余数保持7种颜色if [ $n -eq 0 -a $i -gt 0 ];then  # 判断非第一行c=$(($c + 1))r=${r}"\n"fiif [ $c -eq 1 ];then  # 判断第一行g="4;"  # 设置下划线elif [ $c -eq 2 ];theng="7;"elif [ $c -eq 3 ];theng="1;2;"elseg="5;"fiif [ $n -eq 2 ];theng=$g"44;"fir=${r}"\033[${g}"${color[$n]}"m"${s:$i:1}"\033[0m"  # 拼接字符串doneecho -e ${r}
}# 调用rainbow 功能
rainbow

rainbow.txt 文件内容如下

赤橙黄绿青蓝紫绚丽缤纷雨后呈疑是神仙涂艳色彩虹天际似桥横

输出效果:

shell输出彩虹色相关推荐

  1. shell输出加颜色

    shell输出加颜色 #cat a.sh #!/bin/sh blue=`tput setaf 4` reset=`tput sgr0` echo "${blue}[INFORMATION] ...

  2. shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录sshpass 应用实践...

    在很多实践项目中,我们经常会通过SSH来进行认证,如通过SSH拷贝文件,虽然我们可以使用公钥与私钥实现ssh 无密码登录,在不同的服务器上又需要配对相应的密钥,切换用户麻烦等问题,在一些需要交互但会涉 ...

  3. linux 终端与shell输出大小不匹配

    改变shell输出大小 在使用一个终端(例如iterm2)打开一个ssh连接之后,如果改变终端窗口大小,这时候shell输出和终端大小会不匹配.这时候执行命令 /usr/bin/resize 或者直接 ...

  4. Linux Shell脚本入门教程系列之(七)Shell输出

    本文是Linux Shell脚本系列教程的第(七)篇,更多shell教程请看:Linux Shell脚本系列教程 与其他语言一样,Shell中也有输出操作,而且在实际应用中也是非常重要的,继上一篇之后 ...

  5. linux shell输出数字小数点前少了0_南京课工场IT培训:SHELL 超详细基础知识,适合新手小白(一)

    一.什么是shell? 在linux内核与用户直接的解释器程序: 通常指/bin/bash; 相当于操作系统的"外壳". 二.怎么使用shell? shell的使用方式? 1. 命 ...

  6. linux shell 输出到数据库,linux shell 入门

    利用vi等文本编辑器编写Shell脚本的格式是固定的,如下: Yourcommandsgohere chmod+xfilename.sh 下面我们从经典的"helloworld"入 ...

  7. shell 输出数据到文本_Linux运维工程师从基础到进阶:Shell变量知识梳理

    Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂,却是云计算开发人员必须要掌握的技术之一.接下来的广州云计算培训小 ...

  8. shell输出毫秒_【Linux】shell: 获取时间间隔到毫秒、微秒级别

    对于shell,通过date命令可以获取到当前时间,还可以设定特殊格式,看help你可以看到下面两个好用的参数: %s seconds since '00:00:00 1970-01-01 UTC' ...

  9. [Python]关于使用subprocess.run捕获shell输出的方法

    subprocess模块文档https://docs.python.org/zh-cn/3/library/subprocess.html 方法 p=subprocess.run([args],std ...

最新文章

  1. 《RPA、AI、.NET Core 与未来》-中国.NET开发者峰会
  2. bzoj 3238: [Ahoi2013]差异
  3. 将JsonObject转换成HashMap
  4. OpenMP、MPICH与OpenMPI
  5. php ci sql性能时间,Codeigniter操作数据库表的优化写法总结
  6. 那一天,那一月,那一年,那一世,那一瞬
  7. matlab中的高阶导数,如何用matlab求函数的导数与高阶导数 需要技巧
  8. 计算机桌面颜色如何设置标准,电脑桌面背景字体颜色设置小技巧
  9. 《我和PIC单片机:基于PIC18》——导读
  10. itchat 运行记录
  11. Scrapy+MongoDB+FastAPI搭建免费IP代理池接口
  12. 2017 linux wine 迅雷,Ubuntu+Wine+迅雷+QQ安装方法
  13. 宏观经济学-大题资源整理
  14. mysql vtype_ExtJs6学习笔记 -- 自定义 vtype
  15. 医生,我的眼球掉出来了,快帮我种回去!
  16. JAVA查询数据库并显示jsp_java servlet数据库查询并将数据显示到jsp页面
  17. C语言中的atoi函数的实现
  18. linux 格式化 4k对齐,硬盘WD10EARS在FreeNas的格式化方法,4k对齐的问题
  19. 手把手教你训练自己的目标检测模型(SSD篇)
  20. 百度云非会员下载限速套路:

热门文章

  1. “一笔画”的游戏的规律
  2. JAVA英语单词(带音标)
  3. citespace学习总结—二、CNKI数据的导入
  4. java 药店管理系统,毕业论文--基于java的药店管理系统.doc
  5. SPC5607B的eDMA模块使用示例
  6. 福布斯区块链50强榜单发布,6家中国机构上榜
  7. composer 提示内存不足且没有交换空间
  8. 如何使用vray进行建筑渲染?
  9. Rundll32.exe在批处理里的应用
  10. (15 C++ Homework) Alipay System 1 user