我有一个问题,如果有人知道答案,我会很感激。 好的,到了这一点。在我的一个脚本中,我有以下表达式,我不清楚表格手册应该产生什么效果:
if ! [[ -s "$the_file_to_check" ]] ; then echo "file is zero sized and not exist | is exist and zero sized | not zero sized and not exist | not zero sized or not exist | not exist (obviously zero sized)" ; fi
存在单独的检查存在(-a键),为什么要添加另一个?
无论如何这个逻辑如何运作。
我在定义上有点迷失。
P.S。
我需要检查空虚但不存在。谢谢大家。
答案 0 :(得分:1)
-s
不仅检查文件是否存在,还检查它是否包含任何数据(即,如果文件的大小大于0字节)。这不仅仅是-a
选项(实际上是-e
的同义词),它只测试文件是否存在。
touch foo
[[ -a foo ]] && echo "File foo exists"
[[ -s foo ]] || echo "File foo exists, but is size 0 bytes"
(我想知道-a
的基本原理是什么,因为我不知道它与-e
有什么不同。)
答案 1 :(得分:0)
如果文件不存在或文件大小为零,则此if命令只打印字符串file is zero sized and not exist | is exist and zero sized | not exist (obviously zero sized)
。
如果您希望if
命令仅检查零大小的文件而不是文件存在,那么您可以执行以下操作:
if [[ $(du -h "$the_file_to_check" |cut -f 1) == "0" ]] ;then
echo "file is zero sized" ;
fi
但如果文件不存在,则此if
语句将发布错误。确保仅在文件存在时执行此操作。