diff.txtというファイルがあります。 このファイルが空であるかどうかをチェックしたい。このようなことをしましたが、うまくいきませんでした。
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
スペルミスはイラッとしますよね。 empty "のスペルをチェックして、次のことも試してみてください。
#!/bin/bash -e
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
私はシェルスクリプトがとても好きですが、その欠点の一つは、C++コンパイラのようなコンパイラが助けてくれるのに対し、シェルはスペルミスを助けてくれないことです。
ちなみに、@Matthias氏の提案により、empty.txt
とfull.txt
の役割を入れ替えたことに注意してください。
[ -s file.name ] || echo "file is empty"
[[ -s ファイル ]]の場合--> ファイルのサイズが0より大きいかどうか確認します。
if [[ -s diff.txt ]]; then echo "file has something"; else echo "file is empty"; fi
必要に応じて、現在のディレクトリにあるすべての*.txtファイルをチェックし、空のファイルをすべて報告します。
for file in *.txt; do if [[ ! -s $file ]]; then echo $file; fi; done