Linux
bash +如何驗證文件是否為空
眾所周知,這種語法將列印文件為空
[ -s file.name ] || echo "file is empty"
但是如果文件帶有空格或TAB或空格怎麼辦?, 但沒有任何真實字元,如 az 1-9 等等
所以我用這個
[[ $(tr -d "\r\n" < file.name |wc -c) -eq 0 ]] && echo "File has no content"
但是當我們設置
echo " " >file.name
那麼以下語法將不會列印 - 文件沒有內容
[[ $(tr -d "\r\n" < file.name |wc -c) -eq 0 ]] && echo "File has no content"
所以我們在這裡遇到了麻煩
如何驗證文件為空但可以包含空格/製表符/空白或空無任何內容
目標 - 驗證文件是否為空,但可以包含空格/製表符/空行,或為空而沒有任何空格/空行/空製表符
與**
grep
**:grep -q '[^[:space:]]' file.name || echo "file is empty or unreadable"
grep '[^[:space:]]' file.name
- 僅當找到任何非空白字元時才會生成輸出[^[:space:]]
。-q
抑制輸出以僅保留退出狀態,該狀態告訴我們是否找到了非空格字元。