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

这里有一个疑问,为何变量downloader中,明明是命令which wget,但一路真逻辑走下来到最后的一句,竟然可以当成wget的命令来用,当中就隔着一句文件测试语句,怎么这个which就不见了呢?我真的是想不通啊!

写一个脚本,完成如下任务:

1、分别复制/var/log下的文件至/tmp/logs/目录中

2、复制目录时,才使用cp -r

3、复制文件时,使用cp

4、复制链接文件,使用cp -d

5、余下的类型,用

#!bin/bash

#

targetDir="/tmp/logs"

[ -e $targetDir ] || mkdir $targetDir

for fileName in /var/log/*; do

if [ -f $fileName ];then

copyCommand="cp"

elif [ -d $fileName ];then

copycommand="cp -r"

elif [ -h $fileName ];then

copyCommand="cp -d"

else

copycommand="cp -a"

fi

$copyCommand $fileName $targetDir

done

本题已应马哥所说,将普通文件测试放于逻辑判断语句的第一句,提高运行效率。

以上题目摘自2014马哥Linux0218-4课中。

时间: 2024-10-25 07:08:38

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

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中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 "

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

马哥教育第四天文件权限、bash、grep、egrep

4.1.1.chmod 修改所有者权限(-u(属主).-g(属组).-o(其他).-a(所有)),--reference参考指定文件权限赋值给需要修改文件,举例:chmod --reference=/etc/inittab /tmp/123.txt ,-R(递归修改目录下所有文件权限).chown user:group可以同时修改属主和属组.umask用户创建默认权限值(目录为777-umask.文件666-umask(文件权限减去umask若有执行权限将会在对应的权限上加1))4.1.2.Ct

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

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

马哥linux 2014中秋狂欢喜,答题送大礼!

    聆听大师声音 追随智者脚步     又是一个扬帆起航的黄金九月,九月对每一个运维人来说既是自己职业生涯规划的一次挑战,与此同时也是一个逆转僵局的机会,恰逢中秋佳节,马哥linux为答谢新老朋友的一路的陪伴,支持和厚爱,特推出一份厚礼-->答题赢大礼!让我们在知识和挑战中度过一个与众不同的中秋. 如何参与答题: 1.联系我们的客服人员:1661815153和2813150558索要答题邀请码 2.进行习题测试并截图保存结果小窗我们的客服人员领取相应奖励 3.每人仅限一次答题机会,作弊者将取