shell编程实战之施行多个名目下的php程序-linux运维
拿个这个需求,我的考虑是,将名目作为参数通报给shell足本而不是写死在程序中。这里需要增补个见识点:shell足本程序的预定义变量
/path/to/scriptname opt1 opt2 opt3 opt4 $0 $1 $2 $3 $4
$0表示足本文件名,$1表示首先个参数,顺次类推。除此以外,$#表示参数的个数,$*表示所有的参数。
按照我的设法就是:
shell足本 名目名1 名目名2 ……
想拿到所有的名目名就非常的简略了,施行运用$*即可。但是,关于程序的强健性,我们确定需要对名目名就校验,检查可否输入了名目名以及该名目可否存在。
# 检查可否输入了参数 if (( $# < 1));then echo 'please input some dirs' echo 'Usage ${0} dir1 dir2 ...' exit 1 fi # 检查目录 for dir in $* do if [ ! -d $dir ];then echo "$dir is not a dir" exit 2 fi done
第一,我们检查会员可否输入了参数,通过预定义变量$#来推断,$#要是小于1则表示没有输入参数。然后,进行名目的检测,查看输入的参数可否是一个名目。这里用[ ! -d $dir ] 来检测 。
验证性的代码完成后,接下来就是要施行名目下的php足本了。其实主要的一点就是猎取名目下的php文件名。个别的我们都以.php结尾的文件名作为php的足本名。所以,这里我们只有施行以.php为后缀名的文件就行了。
# 施行名目下的php足本 for dir in $* do files=$(find $dir -name '*.php') for file in $files do $PHPBIN $file >/dev/null 2>&1 done done
这里我们运用了两层轮回,外轮回遍历出所有名目,内层轮回遍历名目下的所有php文件。
下面,贴出完备的shell足本
#!/bin/bash # 施行多个名目下的php足本程序 PHPBIN=/usr/local/php/bin/php if (( $# < 1));then echo 'please input some dirs' echo 'Usage ${0} dir1 dir2 ...' exit 1 fi # 检查目录 for dir in $* do if [ ! -d $dir ];then echo "$dir is not a dir" exit 2 fi done # 执行目录下的php脚本 for dir in $* do files=$(find $dir -name '*.php') for file in $files do $PHPBIN $file >/dev/null 2>&1 done done
最后,我们来总结下该足本用到了哪些见识:
前提推断以及轮回施行
[ -d 文件名 ]来检测该文件可否为一个名目
find下令来查寻名目下以.php为后缀的文件
shell编程的预定义变量
以上就是shell编程实战之施行多个名目下的php程序的细致内容,更多请关注 百分百源码网 其它相干文章!