[: missing `]' in bash script
<p>So I'm writing a bash shell script, and my first few lines looks like this:</p>

<pre><code>if ! [ $# -eq 0 || $# -eq 1 ]; then
    echo -e "Usage: myScriptName [\e[3mdir\e[0m] [\e[3m-f file\e[0m]"
    exit 1
fi
</code></pre>

<p>But when I run it, it says "[: missing `]'". I don't see a missing ], and nothing except the ; is touching the ], so what am I missing?</p>