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

#!/bin/bash

#

[ $# -lt 2 ] && echo "Too less arguments, quit." && exit 3

#上面一句是当参数不足2个的时候,强制退出

if [[ "$1" == "-u" ]];then

userName="$2"

shift 2

fi

#上段功能是确认参数-u后,将之后的参数写入变量userName,再将前两个参数轮替出去

if [ $# -ge 2 ] && [ "$1" == "-v" ];then

verFlag=$2

fi

#上段功能是当轮替后参数等于2,并且第一个参数等于-v时,将第二个参数写入verFlag变量

verFlag=${verFlag:-0}

#默认变量verFlag为0

if [ -n $verFlag ];then #如果变量verFlag不为空

if ! [[ $verFlag =~ [012] ]];then #如果变量verFlag不属于012中任何一个

echo "Wrong parameter."

echo "Usage:`basename $0` -u Username -v {1|2}"

exit 4

fi

fi

# echo $userName $verFlag 这句是用来测试的

if [ $verFlag -eq 1 ];then

grep "^$userName" /etc/passwd | cut -d: -f1,3,4,6

elif [ $verFlag -eq 2 ];then

grep "^$userName" /etc/passwd | cut -d: -f1,3,4,6,7

else

grep "^$userName" /etc/passwd | cut -d: -f1,3,4

fi

最后这题是属于有些难度的了,感觉属于马哥即兴发挥,毕竟没有画出流程图。

时间: 02-13

2014马哥Linux0218-4中shift轮替和最后一道大题的相关文章

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马哥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马哥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 #字符测试的语

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

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 "

马哥-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

【51CTO学院三周年】-感谢恩师马哥让我成为Linux运维工程师

[51CTO学院三周年]学习.提升.感恩 --感谢51cto学院和恩师马哥让我成为Linux运维工程师   今天是学院三周年学院给了我很大帮助今天我也来写一下我的真实感悟心得.我是12年在网上无意搜索发现有个很好的IT互动网站叫51cto,当时记得还有个叫CSDN,但是对比了下感受还是51cto的氛围和功能更ok点,慢慢也喜欢上这个风格了.没事儿就看看新闻看看博文.收获也挺大的. 在学院成立,我就开始看一些视频课程学习,看过韩老师的windows.一次偶然机会看到马哥讲linux的课程,马哥讲的

马哥:一个38岁北漂大龄在线教育创业者维权的痛与谢

全民创业的大背景下,创业成为了近一两年来的新潮,主力军便是这些80后们和90后们,浩浩荡荡的创业大军如雨后春笋般涌现. 虽然事业开始于8年前,但考虑到进京创业不过是2015年后半年的事情,我这个大龄青年也算是赶了个时髦. 创业公司第一年后存活比例不超过20%,好在幸运的是,通过努力,我们活了下来并逐渐拥有了一个年轻且充满激情的团队. 背井离乡进京赶考,若非家人的鼎力支持,对于年近不惑的我确实是一个巨大的挑战. 幸运的是,近些年在线教育赶上了风口,这使得我这个笨拙的创业者在互联网教育这一侧也感受到

马哥2013年运维视频笔记 day01 系统基础知识

没有什么可说的,马哥的Linux视频真的是精品,这里把我学习以后的笔记整理到这里,以备不时之需. day01 ①.Linux学习的一些方法论 做好总结,必须学习完一个知识点以后要用自己的思想把它彻底的给别人讲明白,这样这个知识就真的融入你们的知识体系了,否则看着会了,其实是一知半懂.比较好的方法就是写总结,记笔记,然后汇总成博客,这样可以锻炼你对问题条理化理解,这会影响你们的一生,是隐形的影响. 都说Linux很难,不然怎么体现你的价值啊?只有基础打牢,之后的中高级内容才能从容不迫.要做好知识结