乐闻世界logo
搜索文章和话题

How do you check if a file is empty in shell scripting?

1 个月前提问
1 个月前修改
浏览次数17

1个答案

1

在Shell脚本中检查文件是否为空可以使用多种方法。下面是两种常用的方法:

方法1:使用-s 文件测试运算符

在Shell中,-s 运算符可以用来检查文件是否不为空。其逻辑是如果文件存在且其大小大于零,则返回true。相反地,如果文件为空或者不存在,则返回false。

bash
filename="example.txt" if [ -s "$filename" ]; then echo "文件 '$filename' 不是空的。" else echo "文件 '$filename' 是空的或不存在。" fi

这种方法简单直接,可以快速地帮助我们判断一个文件是否为空。

方法2:使用wc -l 命令

另一种方法是使用wc -l命令,该命令会计算文件中的行数。如果文件为空,行数会是0。

bash
filename="example.txt" line_count=$(cat "$filename" | wc -l) if [ "$line_count" -eq 0 ]; then echo "文件 '$filename' 是空的。" else echo "文件 '$filename' 不是空的,有 $line_count 行。" fi

这个方法相对复杂一些,它通过统计文件的行数来判断文件是否为空。这种方法不仅可以检测出文件是否为空,还能给出非空文件的具体行数,信息更加丰富。

总结

这两种方法都可以有效地在Shell脚本中检查文件是否为空。选择哪一种方法取决于具体的需求和情况。如果只需要简单地判断文件是否为空,使用-s运算符可能更简单一些。如果你需要更多的文件内容信息(如行数),则可以考虑使用wc -l命令。

2024年8月14日 17:46 回复

你的答案