シェルスクリプト のif文で”command not found”

シェルスクリプトを書いていたらif文の条件式でcommand not foundがでました。

問題点

[sample.sh]
--------------------------
# !/bin/bash

if [$date -le $match]; then
    echo "ok"
fi

このように変数同士を比較するような条件式を書いて実行したところ以下のようなエラーが表示されました。

$ ./sample.sh 
./sample.sh: line 25: [20190903024350: command not found]

原因と解決法

原因は[$dateの部分がひとつのコマンドとして認識されてしまっていたことにありました。

以下のように[$の間にスペースを空けてあげたら動きました。

[sample.sh]
--------------------------
# !/bin/bash

if [ $date -le $match ]; then
    echo "ok"
fi

あまりにも初歩的なミスですが勢いで書いているとやってしまいがちな上に気がつきにくいので気をつけましょう。