If条件中-f和-s选项有什么区别?

时间:2013-11-08 10:37:53

标签: unix if-statement

If条件中的-f-s选项有什么区别

主要是它们在功能上有何不同?

我知道这些谷歌的含义,但想知道实际用途。

1 个答案:

答案 0 :(得分:6)

来自man test

-f FILE
          FILE exists and is a regular file

-s FILE
          FILE exists and has a size greater than zero

实施例

让我们从头开始创建一个文件并查看它。

$ touch b

文件是否存在?

$ [ -f "b" ] && echo "file exists"
file exists                          # yes!!!!

文件的大小是否大于零?

$ [ -s "b" ] && echo "file exists and is greater than zero"
$                                    # no!!!!

因此检查文件是否存在的良好if-elif-else条件可能是:

if [ -s "$file" ]; then
   echo "exists and it is not empty"
elif [ -f "$file" ]; then
   echo "at least exists"
else
   echo "does not exist"
fi