すべての人がこの構文を使用することを知っているので、ファイルは空です
[ -s file.name ] || echo "file is empty"
しかし、ファイルにスペース、タブ、または空白スペースがある場合はどうなりますか? 、ただしa-z 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
は、出力を抑制して、非スペーシング文字が見つかったかどうかを知らせる終了ステータスのみを保持します。