Shammer's Philosophy

My private adversaria

test コマンドでファイルの有無を判定

サンプルのファイル名を変えた場合に、古いファイルがそのまま残ってしまう。
自分で rm コマンドを使って消せばいいのだが、せっかくスクリプトを用意したのだから
その中でやらせることに。


ファイルの有無を判定するための方法、いろいろあるが test コマンドを使用することにした。
最初はファイル数のカウンタを見ればいいと思っていたが、 exer $count + 1 を使用しているので
そのままこれを0と比較できなかった。
いろいろ調べたがよくわからず、結局 test の -s オプションを使用することで決定。


まず、コンパイル済みファイルの一覧をリダイレクトする。

>ls bin/ > delete_file_list.txt

ファイルが存在していれば、delete_file_list.txt の値は0にならない。
そこで、このサイズが0でない場合に削除を実行する。

 ls bin/ > delete_file_list.txt
 if test -s delete_file_list.txt ; then
  echo "Delete bin files."
  rm bin/*
 else
  echo "There are no files in bin directory..."
 fi
 rm delete_file_list.txt

test メソッドは条件判定を行うメソッド。
さまざまなオプションが他にもあるようだ。
機会があればいろいろやってみるかな。