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课中。

你可能感兴趣的:(linux,if,文件测试)