首先,需要将用到的函数全部放入一个文件中,此文件命名为(library.sh)

initailizeANSI()
{esc="、033"blackf="${esc}[30m"; redf="${esc}[31m";greenf="${esc}[32m";yellowf="${esc}[33m";bluef="${esc}[34m";purplef="${esc}[35m";cyanf="${esc}[36m";whitef="${esc}[30m";blackb="${esc}[40m"; redb="${esc}[41m";greenb="${esc}[42m";yellowb="${esc}[43m";blueb="${esc}[44m";purpleb="${esc}[45m";cyanb="${esc}[46m";whiteb="${esc}[47m";boldon="${esc}[1m";boldoff="${esc}[22m";italicson="${esc}[3m"; italicsoff="${esc}[23m";ulon="${esc}[4m";uloff="${esc}[5m";invon="${esv}[7m";invofff="${esc}[27m"reset="${esc}[0m"
}in_path()
{cmd=$1 ourpath=$2 result=1oldIFS=$IFS IFS=":"for directory in $ourpathdoif [ -x $directory/$cmd ]; thenresult=0fidoneIFS=$oldIFSreturn $result
}
checkForCmdInpath()
{var=$1if [ "$var" != "" ];thenif [ "${var:0:1}" = "/" ];thenif [ ! -x $var ];thenreturn 1fielif ! in_path $var "$PATH";thenreturn 2;fifi
}validint()
{number="$1" min="$2" max="$3"if [ -z $number ];thenecho "you didn't input anything"fiif [ "${number%${number#?}}" = "-" ];thentestvalue="${number#?}"elsetestvalue="$number"finodigits="$(echo $testvalue | sed -e 's/[[:digit:]]//g')"if [ ! -z $nodigits ];thenecho "invalid number format only digits,no commas,spaces,etc.">&2return 1fiif [ ! -z $min ];thenif [ $number -lt $min ];thenecho "value is too small"return 1fifiif [ ! -z $max ];thenif [ $number -gt $max ];thenecho "value is too large"return 1fifireturn 0
}isLeapYear()
{year=$1if [ "$((year % 4))" -ne 0 ];thenreturn 1elif [ "$((year % 400 ))" -eq 0 ];thenreturn 0elif [ "$((year % 100))" -eq 0 ];thenreturn 1elsereturn 0fi
}

第二部,编写测试脚本

. library.shinitailizeANSIecho "do you have echo in your path? (1=yes,2=no)"
read answer
while ! validint $answer 1 2;doecho "${boldon}Try again${boldoff}.Do you have echo in your path?(1=yes,2=no)"read answer
doneif ! checkForCmdInpath "echo";thenecho "Nope,can not find the echo command"
elseecho "The echo command is in the path."
fiecho ""
echo "Enter a year you think might be a leap year: "
read yearwhile ! validint $year 1 9999;doecho "please enter a year in the ${boldon}correct${boldoff} format: "read year
doneif isLeapYear $year;thenecho ${greenf}You are right! $year is a leap year.${reset}
elseecho "${readf}Nope,that's not a leap year.${reset}"
fi
exit 0

运行结果:

shell脚本实战(第2版)/人民邮电出版社 脚本12 构建shell叫脚本库相关推荐

  1. 银行管理系统(使用SQL Server)-Python快速编程入门(第2版)-人民邮电出版社-阶段案例

    阶段案例-银行管理系统 题目描述 银行管理系统是一个集开户.查询.取款.存款.转账.锁定.解锁.退出等一系列业务于一体的管理系统,随着计算机技术在金融行业的广泛应用,银行企业采用管理系统替代了传统手工 ...

  2. 《汇编语言程序设计教程》人民邮电出版社第二版习题及参考答案

    网上的答案是第一版的,重新整理了一下 <汇编语言程序设计教程>人民邮电出版社第二版 刘慧婷,王庆生 主编 习题及参考答案 更多汇编内容请访问:omegaxyz.com 第一章至第五章 核对 ...

  3. python qt5 gui快速编程_现货正版 Python Qt GUI与数据可视化编程 pyqt5教程书籍 pyqt5快速开发与实战Qt5 GUI快速编程 计算机网络程序设计人民邮电出版社...

    热销单品 查看更多 > RMB:85.00 立即购买 RMB:63.50 立即购买 RMB:73.50 立即购买 RMB:49.50 立即购买 RMB:127.80 立即购买 RMB:66.00 ...

  4. 精品教材《信号与系统》(套系)开发方案 | 人民邮电出版社

    电类基础课程系列精品教材(面向"十四五"国家级规划教材) 精品教材<信号与系统>(套系)开发方案 清华大学 卓晴 主编 读者对象:普通高等院校理工科专业的本科生. 学时 ...

  5. 人民邮电出版社图灵公司举办的与陈黎夫在线聊天活动——聊天记录

    本期嘉宾:,csdn读书频道,陈黎夫,谢工,主持人,聊天话题:与"陈黎夫"在线交流活动 嘉宾[主持人]: 大家好,欢迎参加人民邮电出版社图灵公司举办的与陈黎夫在线聊天活动. [20 ...

  6. 315,关于《C程序设计伴侣》一书致人民邮电出版社的公开信

    邮电社,不出版文盲写的书行吗? 目录 邮电社,不出版文盲写的书行吗?... 1 抄袭拼凑... 2 欺骗读者... 2 硬伤累累,错谬概念层出不穷... 3 关于关键字... 3 关于标识符... 3 ...

  7. SQL2000 好书 《SQL Server 2000数据库管理与开发技术大全》----求是科技 人民邮电出版社

    SQL2000 好书 <SQL Server 2000数据库管理与开发技术大全>----求是科技  人民邮电出版社

  8. 人民邮电出版社图灵公司的两本SQL Server 2005图书诚征译者

    人民邮电出版社图灵公司介绍(来自http://www.turingbook.com/) 北京图灵文化发展有限公司成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主 ...

  9. 《人民邮电出版社9本计算机教材的教学课件(计算机老师的宝贝)》

    中文名称:人民邮电出版社9本计算机教材的教学课件(计算机老师的宝贝) 资源类型:ISO 发行时间:2004年 制作发行:人民邮电出版社 地区:大陆 语言:汉语 简介: 80x86汇编语言程序设计 王成 ...

最新文章

  1. Redis 的内存淘汰策略问题
  2. Android Studio开发环境配置(win7)
  3. 《研磨设计模式》chap18 状态模式state(3)应用到场景
  4. JAVA字符串格式化-String.format()使用
  5. mysql 10048 linux_解决Can't connect to MySQL server on 'localhost' (10048)
  6. 玩转Android---事件监听篇---第2篇
  7. yolov3前向传播(二)-- yolov3相关模块的解析与实现(二)
  8. 市场对php的需求分析,PHP 留言板功能需求分析
  9. AntDesign Upload组件上传图片
  10. 月入5万!这个头条号变现大招好多人都没注意到
  11. 思科服务器中ftp的配置文件,思科服务器ftp的配置
  12. 学会使用box-sizing布局
  13. Photoshop如何把图片转为RGB颜色模式
  14. Baas是什么?区块链Baas平台开发解决方案带你知晓
  15. 2022-05微软漏洞通告
  16. spacy和en安装
  17. 华为云备份显示服务器异常(1008),云盘服务器异常
  18. 高性能MMORPG通用服务端引擎设计之-基本概念篇
  19. ubuntu1804查看opencv版本
  20. 逆战玩着玩着服务器未响应,逆战进不去一直加载,为什么玩逆战加载很久,逆战内置qt修复,逆战进入游戏加载慢,逆战卡加载:逆战没qt了【为什么我逆战进不去QT官方语音】-南开游戏网...

热门文章

  1. linux中uniq c命令详解,linux uniq 命令整理
  2. 关于SMR,IMR的调研
  3. matlab 产生随机噪声,matlab产生高斯噪声
  4. 用matlab进行markov链预测,用MATLAB仿真markov链程序
  5. 双硬盘双系统的曲折之路
  6. JS 返回上一页及返回上一页并刷新
  7. 用友UAP何冠宇:重新思考云计算技术
  8. Python爬虫之微信数据爬取(十三)
  9. python 进程池 freeze_support_将freeze_support()放在Python脚本中的位置?
  10. pywin32下载方法