2011-05-14 22 views
6

ファイルが最新のものかどうかをチェックするスクリプトがあります。bashの文字列を比較する

updatedate=`ls -l file | sed -e 's/ */ /g' | cut -d' ' -f7` #cut the modification time 
nowdate=`date +"%H:%M"` 
echo "$updatedate $nowdate" 
if [ "$updatedate"="$nowdate" ] 
then 
    echo 'OK' 
else 
    echo 'NOT OK' 
fi 

しかし、私はそれを実行すると、比較は常に真である:

$ ./checkfile 
10:04 10:07 
OK 

$ ./checkfile 
10:07 10:07 
OK 

なぜ?

答えて

15

等号の両側にスペースが必要です。


if [ "$updatedate" = "$nowdate" ] 
2

すべての引数を空白でtestに分ける必要があります。あなたが立っているように、=は2つのオペランドに対して真上にあるので、testは、あなたが意図する3つの引数ではなく、1つの引数を見ます。

+1

[テスト用の省略形です。http://pubs.opengroup.org/onlinepubs/009695399/utilities/test.html(そのコメントはOP用です)を参照してください。 –