写一个下载程序:
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课中。