2014马哥Linux0217-4中LineCount的小程序补完版

上一篇因为没学会字符测试,所以写的文件数行脚本,运行起来并不是那么完美,看完0218-1课后,修改代码成如下,基本没有不理想的状态发现了:

#!/bin/bash

#

read -t 10 -p "Please enter a file path in 10 seconds:" fileName #超时设置成10秒

fileName=${fileName:-null} #变量默认值的设定

if [ "$fileName" == null ];then #字符测试的语句

echo -e "\033[31mTime out!Bad file name input.\033[0m" #这句写成了红色

exit 4 #自定义退出代码,可以随意

elif grep "^$" $fileName &> /dev/null;then

echo "$fileName has `grep -v "^$" $fileName | wc -l` lines and `grep "^$" $fileName | wc -l` space lines."

else

echo "$fileName has `grep -v "^$" $fileName | wc -l` lines and has no space line."

fi

这下算比较完美了,知识盲点会导致程序bug,呵呵。接下来还有文件测试的内容要学习。

时间: 2024-10-13 11:36:49

2014马哥Linux0217-4中LineCount的小程序补完版的相关文章

2014马哥Linux0217中对0214三题的解答

前几天在做2014马哥Linux0214的作业的时候,发现其实这三题在0217中有解答,当然觉得马哥比自己写得好太多,所以忍不住要把马哥的答案贴出来,以供自己学习. 第一题:写一个脚本,用for循环实现显示/etc/init.d/functions./etc/rc.d/rc.sysinit./etc/fstab有多少行 #!/bin/bash for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do line

2014马哥Linux0218-4前半部文件测试的题目

写一个下载程序: 1.首先判断wget是否存在,不存在就退出:有就执行下一步. 2.然后判断用户是否有wget的执行权限,如没有则退出,如有就执行下载. #!/bin/bash # url="http://172.16.0.1/centos6.5.repo" which wget &> /dev/null || exit 5 downloader=`which wget` [ -x $downloader ] || exit 6 $downloader $url 这里有一

2014马哥Linux0214中关于系统启动加载环境变量的顺序问题

0214中,基于CentOS6.4,马哥说交互式用户环境变量加载顺序,如下: /etc/profile-->/etc/profile..d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc 而本人做了一个实验,在以上几处都加上了echo语句,测试到底顺序是怎样的,得到了如下的结果: /etc/profile-->/etc/profile..d/*.sh-->/etc/bashrc-->~/.bashrc-->~

2014马哥Linux0218-4中shift轮替和最后一道大题

写一个脚本,使得无论脚本后跟多少参数,都能计算出参数的和: #!/bin/bash sum=0 for i in `seq 1 $#`;do let sum+=$1 shift done echo $sum 写一个脚本:使用形式如下 userinfo.sh -u username [-v{1|2}] -u选项用于指定用户,而后脚本显示用户的UID和GID; 如果同时使用了-v选项: -v后面的值如果是1,则额外显示用户的家目录路径 -v后面的值如果是2,则额外显示用户的家目录路径和shell #

2014马哥Linux0218-1字符测试与生成交互式选项表的脚本代码

0218课里,先是一个简单的小程序,注意字符测试的使用,建议所有被测试的字符都要加引号,而在字符测试匹配模式(也可以使正则表达式)的时候,需要用双中括号,题目如下: 练习:判定所有用户是否拥有可登陆shell #!/bin/bash for userName in `cut -d: -f1 /etc/passwd`;do if [[ `grep "^$userName\>" /etc/passwd | cut -d: -f7` =~ sh$ ]]; then echo "

vue中进行判断不同字段的判断,主要是区分于微信小程序和网页版之间写法

网页版的vue字段的判断的写法如下: v-if="item.scoreItemState == 0" v-if="item.scoreItemState == 1" 微信小程序中的vue字段的判断的写法 注意:一定要带双花括号{{}} wx:if="{{item.scoreItemState == 0}}" wx:if="{{item.scoreItemState == 1}}"   原文地址:https://www.cnbl

2014马哥Linux0218-4中script.sh的题目

这道题目虽然不是很难,但是如果编程不熟练的话,还是有些挑战的.在这里感谢我搜索到的这位朋友,他的解题代码给我很大的参考,他的blog是:http://sohudrgon.blog.51cto.com/3088108/1586780/ 写一个脚本,完成如下任务,其使用形式如下所示: script.sh {start|stop|restart|status} 其中: 如果参数为空,则显示帮助信息,并退出脚本: 如果参数为start,则创建文件/var/lock/subsys/script,并显示"s

马哥-51CTO-Linux培训中-作业3

练习1:在/tmp 下新建x_m, x_n, y_m, y_n目录 mkdir -pv /tmp/{x_,y_}{m,n}    说明:-p 如果没有父目录则创建父目录. -v 显示创建过程. 练习2: 1)显示/etc/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录 ls /etc/[^a-z][a-z]*    说明:^表示取反,方括弧中字母范围是不区分大小写的.如果题目改为以大写字母开头,后面跟 了一个字母及其它任意长度任意字符的文件或目录,则命令语句可变为: l

马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)

马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文件系统管理详解之三10_05_脚本编程之八 脚本完成磁盘分区格式化20_01_DNS主从复制及区域传送04_04_grep及正则表达式01_03_操作系统基础08_02_bash脚本编程之七 case语句及脚本选项进阶14_03_bash脚本编程之十一(Linux启动流程之三) SysV服务脚本01