シェルスクリプトにすると動かない不思議なコマンド

今日、こんなコマンドを書きました。

grep -E '^\s*system\.version\s*=' ./system.properties

プロパティファイルから、「system.version」がキーとなっている行を探すということをしています。
これをシェル上で実行したらちゃんと動きました。


でも、これをシェルスクリプトにしたら動かなくなりました。
書いたのは、これだけ。

VERSION = `grep -E '^\s*system\.version\s*=' $SYSTEM_PROPERTIES`


最初はプロパティファイルが読めていないのかと思ったんですが、ちゃんと読めていたみたいです。
不思議なのは、正規表現内の「=」を除いたり、「=」の前にスペースを入れたりするとちゃんと動くということ。


正規表現の部分が、シェルスクリプトだと置換されてしまうのかなと思い、「sh -x」*1で確認してみたんですが、そのままになっていました。
ためしに、デバッグ出力されたもの(変数が展開された状態)をコピペしてシェルで実行するとちゃんと動く・・・。


とりあえず原因不明・・・なんでだろう。

*1:シェルスクリプトデバッグモード。変数を展開した後の実際に実行するコマンドが表示される。