如果文件为空,这将通知我们:
[[ ! -s $file ]] && echo "hello there I am empty file !!!"
但是如何检查文件是否有空格(空格或制表符)?
- 空文件可以包含空格/TAB
答案1
仅grep
适用于空格以外的字符:
grep -q '[^[:space:]]' < "$file" &&
printf '%s\n' "$file contains something else than whitespace characters"
答案2
与其他答案类似,但使用否定grep -q
if ! grep -q '[^[:space:]]' "$file"; then
echo "file is empty"
else
echo "File has data"
fi
答案3
如果您想检查空文件内容如果条件 [[ ... ]]
,然后用(不带 -q)包围 grep -z $( grep ... )
:
if [[ -z $(grep '[^[:space:]]' $file) ]] ; then
echo "Empty file"
...
fi
我必须使用它,以避免运行时出现以下错误:
$ [[ grep -q '[^[:space:]]' $file ]]
-bash:需要条件二元运算符
-bash:“-q”附近的语法错误