shell中奇怪的-s文件状态判断

在看一个Ksh脚本,由于ksh的特性,一般用在Unix系统较多,但用户群体还是不及bash。

其他没什么,基本和bash和sh通用,遇到了一个很奇怪的文件状态判断:

-s :判断文件是否为空

使用后发现,原来和理解大不相同,尤其是放在条件语句中,过程就不多说了,直接给结果:

#!/bin/ksh
file=$1
echo "checking file $file..."

if [[ -s $file ]] ; then
    echo "Not EMPTY!"
else
    echo "EMPTY!"
fi

可见该选项-s是一个负逻辑,和-f -x正逻辑有很大不同。

理由:

test -s a.txt # a.txt 为空

返回1

理解了吧。。。

所以-s最好理解成 has size 为好~~

注(-s 在系统帮助中的意思是 -s file exists and has a size greater than zero.)

《转载请表明spenser的博客》

 

 

posted @ 2013-01-04 14:14  spensersheng  阅读(1023)  评论(0编辑  收藏  举报