shell小记

很久没写shell,今天要写个监控脚本,还是shell来得快,于是捡起来。

需求非常简单,对于htdocs目录,递归地遍历每个子目录,并对其中每一个php文件进行代码语法检查,以保证系统健康。

1、shell函数

非常简单,用不用function这个关键字声明无所谓,函数名后有没有括号也无所谓,但还是加上好了,便于别人阅读

与其他语言不同,函数名后不必跟参数列表,调用时和命令行调用一下,直接函数名后面写就OK

function check() {
 if [ $# -eq 1 ]; then
 echo $1
 fi
}
 
check aaa

2、shell的控制语句

1)shell的比较,字符串间的比较用=,整数间的比较用-eq,这个-不可少哦,否则报语法错误,还有就是字符串比较时虽然用“=”,但这个“=”号两边必须要有空格,否则就变成赋值语句了,即if里的条件返回值永远会是真, 这个鼓捣了半天,汗。。。

正确写法:

if [ "$RES" != "No“ ]

2)if后的[和],两边都要有空格,吃过这个亏,所以这次没犯

3)for lf in /file/*,查看/file目录下所有文件,也曾想用for lf in ·ls /file·,但这样返回的只是文件名,而我需要的是全路径加文件名

3、shell的字符串操作

想要一个判断,即文件名是否.php结尾,因文件名是现成的,所以优先选择字符串截取,有几种方式

1)${varname:offset:len},例:

varname="abc"

echo ${varname:1:2}   //bc

但我想从后往前截的,于是看网上说可将offset置为负数,试了一下echo ${varname:-1} ,返回的是"abc",看来不符合需求

2)${varname##*string},例

varname="abc.php"

echo ${varname##*.}   // php,符合需求了。

类似的还有${varname#*string} ${varname%%*string} ${varname%*string} 有兴趣用到时可看下

3)if [[ $F == *.php ]] ,这个最简单直接了,判断$F是否是以.php结尾,但要注意这里双”[“”]“哦

4、调试

加上-n参数,检查语法错误,加上-x参数,可以看到程序执行时的每条命令,还是非常好的!不然echo死人了!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值