在看一个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的博客》